[英]How do I read a floating point value and print the closest numbers less than or greater than that value?
[英]How do I compare floating point numbers
请原谅问题中明显的“我可能已经知道这一点”元素,但我没有看到一种方法可以对评估结果进行除法运算,以使结果恢复为真。
我正在寻找一个函数,该函数将以特定精度的浮点数返回结果,以便以下代码可以工作...
float a = 0.66;
if( magicPrecisionFunction(2.0f/3.0f , 2) == a){ //the 2 specifies the level of precision
//something
}
我意识到我可以在2分钟内自己编写代码,但是我希望找到一种Java本地方法来“正确”地执行此操作。
如果您想获得精度,我就不会使用float
因为double
容易编写,并且可以为您提供5000亿倍的精度。
类似于@rofl的示例
int n = 2, d = 3;
if ((long)(100.0 * n / d) == 66) {
...
}
这不仅比使用BigDecimal快约100倍,而且代码编写更短。
BTW将双精度型转换为BigDecimal的正确方法是使用valueOf
BigDecimal bd = BigDecimal.valueOf(0.1);
System.out.println(bd); // prints 0.1
您可以使用BigDecimal ,它将完全满足您的需求,您可以创建所需的数字并使用MathContext设置精度
BigDecimal b1 = new BigDecimal("2.0");
BigDecimal b2 = new BigDecimal("3.0");
BigDecimal ans = b1.divide(b2, new MathContext(2)); // 2 is precision
多么...
if (Math.round(100.0f * 2.0f/3.0f) == 66) {
..
}
编辑:啊...错过了重点...不是圆的,而是truncatte。 在这种情况下:
if ((int)(100.0f * 2.0f / 3.0f) == 66) {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.