java - 如何在Java中比较长整型变量和数字

标签 java

 double bonusScore = 10;

 if (bonusScore > 0) {
//code body
}

我想比较bonusScore的两倍和0,我该怎么做,因为如果按照上面的方式完成它是不准确的,我不知道为什么。

最佳答案

在java中,我们在比较 float 时需要小心。示例:

double a = 1.3;
double b = 3.0;
double bonusScore = a * b;

System.out.println(bonusScore); // expect bonusScore = 3.9

bonusScore = bonusScore - 3.9;
System.out.println(bonusScore); // expect bonusScore = 0

我有输出:

3.9000000000000004         // expect 3.9
4.440892098500626E-16      // expect 0

很明显,我们必须将它们与允许的容差进行比较。这里我们需要将 bonusScore 与零进行比较,并具有容差 0.00001:

if (bonusScore > 0.00001)

我读过一篇非常有用的article关于 float 。希望这有帮助。

关于java - 如何在Java中比较长整型变量和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091057/

相关文章:

Java 可变变量

java - OR 运算符 - 哪个语句更有效?

java - 在 Spring Boot 应用程序中集成 BIRT 报告

java - Android Studio Java 位图工厂返回 null

java - 复制 Android 文件时找不到文件异常

javascript - Wicket - 使用 AJAX 刷新组件 - 文档元素后的垃圾

java - Webdriver - 页面对象模型和 Maven 找不到类

java - 类在 Android 应用程序中被拒绝

Java URL ("file://") 在 Windows XP 上不起作用

java - Swing:创建一个 UWP ("Metro")–like 按钮