4.1 Math类的方法
学习数学时,你可能见过 sin 和 log 这样的函数,还学习过如何计算像 sin(π/2) 和 log(1/x) 这样的表达式的值:先计算括号内的表达式,它们被称为函数的实参(argument),然后计算函数本身,可能还要用到计算器。
计算 log(1/sin(π/2)) 这样更复杂的表达式时,可重复执行这个过程:先计算最里面的函数的实参,再计算函数本身,依此类推。
Java 库包含一个 Math 类,它提供了执行常见数学运算的方法。这个类位于 java.lang 包中,因此无需导入。可像下面这样使用或调用(invoke)Math 类的方法:
double root = Math.sqrt(17.0);double angle = 1.5;double height = Math.sin(angle);
第 1 行将 root 设置为 17 的平方根;第 3 行计算 1.5(变量 angle 的值)的正弦。
三角函数 sin、cos 和 tan 的实参应以弧度为单位。要想将度数转换为弧度数,可将其除以 180 再乘以 π。好在 Math 类提供了一个名为 PI 的 double 常量,它包含 π 的近似值:
double degrees = 90;double angle = degrees / 180.0 * Math.PI;
请注意,常量名 PI 的字母全都是大写;Java 根本不知道 Pi、pi 和 pie 为何物。另外,PI 是一个变量而不是方法的名称,因此它后面不带括号。常量 Math.E 亦是如此,它包含欧拉数的近似值。
在度数和弧度数之间进行转换是一种常见的运算,因此 Math 类提供了执行这种运算的方法。
double radians = Math.toRadians(180.0);double degrees = Math.toDegrees(Math.PI);
另一个很有用的方法是 round,它将浮点数圆整为最接近的整数,并将其作为 long 值返回。long 类似于 int,但可表示的值更大。更具体地说,int 长 32 位,可存储的最大值为 231 - 1——约为 20 亿;long 长 64 位,可存储的最大值为 263 - 1——约为 9×1018。
long x = Math.round(Math.PI * 20.0);
结果为 63(这是将 62.8319 向上圆整得到的)。
请花点时间阅读 Math 类的这些方法和其他方法的文档。要想查找有关 Java 类的文档,最简单的方法是在网上搜索 Java 和类名。
