【发布时间】:2013-05-13 22:29:23
【问题描述】:
请原谅问题中明显的“我可能应该已经知道这个”元素,但我没有看到一种方法可以让我通过这个评估的除法方面来让结果恢复为真。
我正在寻找一个函数,它将结果作为特定精度的浮点数返回,以便以下工作......
float a = 0.66;
if( magicPrecisionFunction(2.0f/3.0f , 2) == a){ //the 2 specifies the level of precision
//something
}
我意识到我可以在 2 分钟内自己编写此代码,但我希望找到一种 Java 本地方式来“正确”执行此操作。
【问题讨论】:
-
使用 double 或 float,您将永远无法获得浮点数的精确值。如果您想处理这些数字,请改用
BigDecimal。很抱歉,但是是的,这是一个你应该已经知道了。 -
我不认为你的意思是无理数。您可以在浮点类型中表示的每个有限数都是有理数。
-
AFAIK 你可以对结果进行四舍五入。如果您看到
java.math.BigDecimal文档,您可以使用BigDecimal#setScale实现此目的 -
啊!这就是 BigDecimal 的秘密。很高兴知道!非常感谢。
-
能否将标题更改为“我如何比较有理数” :) 我已经尝试编辑但被拒绝了。
标签: java floating-point