我尝试在Java中对小于1的指数执行幂计算,例如:(2^0.333)但是当我在Java中计算它时,我得到的结果比在普通计算器上进行相同计算的精度要低。
在Java中
double f = Math.pow(2.0,0.333);
System.out.println(f);
//output
//1.2596299799473993在一个普通的计算器里我得到了
//output
//1.2596299799473993502546921425703在java中如何在不损失精度的情况下获得相同的结果?
任何帮助我们都将不胜感激
发布于 2012-10-25 08:30:27
Java内置的浮点运算的精度是有限的。内置的BigDecimal类没有提供您需要的操作(实数求幂,甚至是日志)。您可以使用第三方应用程序,如Apfloat (请参阅ApfloatMath类)或JScience,这两个应用程序都可以执行任意精度的求幂计算。
发布于 2012-10-25 08:31:52
仅使用基元双精度不能获得更精确的值。相反,可以使用BigDecimal,它用于表示任意精确的浮点值。
请注意,您将需要一个自定义pow函数来处理BigDecimal。可以在in this SO answer中找到一个实现。
发布于 2012-10-25 08:27:43
双精度浮点值,就像您在Java代码中使用的那样,只能准确地表示15到17个有效数字。除非您正在使用的Windows计算器应用程序在内部使用了更高精度的数据类型(这不太可能),否则这些数字很可能是没有意义的。
https://stackoverflow.com/questions/13059842
复制相似问题