Math位于java.lang包下,当我们试图调用Math.sin方法时候,在Math类中显示的是StrictMath中的 sin方法
public static double sin(double a) { return StrictMath.sin(a); // default impl. delegates to StrictMath }
StrictMath中仅仅定义了方法,并且申明为static native
/** * Returns the trigonometric sine of an angle. Special cases: * <ul><li>If the argument is NaN or an infinity, then the * result is NaN. * <li>If the argument is zero, then the result is a zero with the * same sign as the argument.</ul> * * @param a an angle, in radians. * @return the sine of the argument. */ public static native double sin(double a);
在Math类中,为了达到最快的性能,所有的方法都使用计算机浮点单元中的历程。如果得到一个完全可预测的结果比运行速度更重要的话,就应该使用StrictMath类。它使用“自由发布的Math库”实现算法,以去报在所有平台上得到相同的结果。有关这些算法的源代码请参阅http://www.netlib.org/fdlibm/index.html
参考:
Math类还提供指数函数以及它的反函数--自然对数 Math.exp Math.log
Math类还提供了两个用于表示π和e常量的近似值 Math.PI Math.E
提示:从JDK5.0开始,不必在数学方法和常量名前添加前缀Math,而只用在源文件的顶部加上下列内容就可以 Import static java.lang.Math.*;
System.out.println("The square root of \u03C0 is "+sqrt(PI));
相关推荐
在实际编程中,开发者可以根据需求选择使用Math类或StrictMath类,前者注重性能,后者强调精确性。对于那些对精度要求非常高的应用,如金融计算或科学模拟,通常推荐使用StrictMath类。而对于一般用途的数学计算,...
在数学中,一个非负实数的平方根总是非负的,因此,如果输入的数是负数,`Math.sqrt()`和`StrictMath.sqrt()`都会抛出`Math.sqrt()`异常。为了处理负数的平方根,可以考虑使用复数或者根据具体需求定义特殊的行为。 ...
public final class Mathextends ObjectMath 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 与 StrictMath 类的某些数学方法不同,并非 Math 类所有等价函数的实现都定义为返回逐位...
在Android中,我们可以利用Java Math库或者Android提供的 StrictMath 类来完成这些计算。例如,对数函数(log)可以使用Math.log(),三角函数(sin、cos、tan)可以使用Math.sin()、Math.cos()和Math.tan(),指数...
对于更复杂的数学运算,如三角函数、对数等,可以使用`Math`类或者`StrictMath`类提供的静态方法。 标签中的“标准数学计算器”可能意味着这个计算器不仅包含基本的四则运算,还可能包括一些高级功能,比如开方、幂...
在Android中,这些数学运算可以借助Java的`Math`类或` StrictMath`类来实现。例如,`Math.pow()`用于计算幂,`Math.log()`用于求对数,`Math.sqrt()`用于开方等。源码中会有一个或多个类专门负责这些计算逻辑,通过...
Java APIs: In addition to Object and APIs related to exceptions, you explore Math, StrictMath, BigDecimal, BigInteger, Package, Boolean, Character, Byte, Short, Integer, Long, Float, Double, Number, ...
- StrictMath:与Math类相似,但是对浮点运算的算法更为严格,主要是为了保证在不同平台上得到一致的结果。 3. 异常处理相关的类: - Throwable:是所有错误(Error)和异常(Exception)的超类,提供了错误跟踪...
首先,`java.lang`包包含了基本数据类型的包装类,如`Boolean`, `Long`, `StrictMath`, `Byte`, `Math`, `String`, `Character`, `Number`, `StringBuffer`, `Class`, `Object`, `System`, `ClassLoader`, `Package`...
10. **新的数学库函数**:在java.lang.Math和java.lang.StrictMath类中添加了一些新的数学函数,如hypot()、ulp()等。 11. **改进的反射API**:增强了反射API,提供了一些新的方法,如Class的isModule()、getModule...
- **StrictMath**: 提供了数学运算,其所有方法都保证是精确的,不会溢出。 - **Byte**: 包装字节类型(byte),提供了与字节相关的操作。 - **Math**: 提供了各种数学运算方法,如平方根、指数、对数等。 - **...
14. **StrictMath**:提供了更加严格的数学计算方法。 15. **String/StringBuffer/StringBuilder**:字符串处理类,其中`StringBuilder`和`StringBuffer`提供了可变字符串的操作,而`String`类则是不可变的。 16. **...
Jafama(Java快速数学)由与java.lang.Math处理相对应的快速(但不是草率的)组成,外加其他处理。 它们通常快2-4倍(最多15倍),准确度约为1e-15,并且可以处理特殊情况(NaN等)。 从2.1版开始,还提供了...