我知道StrictMath遵循给定的算法,并且在每台机器上都会给出相同的结果;但是Math更准确,我看到它的使用率更高。哪个是首选?我显然希望可重复性,但准确性对我也很重要。

最佳答案

根据accuracy的真实定义,StrictMath更准确。一般来说,MathStrictMath快,但并非总是如此。通常,Math库函数只是调用StrictMath实现。

无论如何,我认为您的问题的答案可以直接从Math Javadoc找到:


  与StrictMath类的某些数字方法不同,Math类的等效函数的所有实现均不是
  定义为逐位返回相同结果。这种放松
  允许在严格可重复性的情况下实现性能更好的实施
  不需要。
  
  默认情况下,许多Math方法只是简单地在StrictMath中调用等效方法来实现它们。代码生成器是
  鼓励使用特定于平台的本机库或微处理器
  说明(如果有)以提供更高的性能
  数学方法的实现。如此高性能
  实现仍必须符合Math规范。


对于大多数应用程序,通用的Math库是更好的选择。如果只考虑很小的舍入误差,则StrictMath是必要的。因此,除非您的准确性必须非常强,否则不要将不一致缠在轴上。

关于java - 在Java中,为了保持一致性,StrictMath仍然比Math更受欢迎吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32977034/

10-12 02:03