相关疑难解决方法(0)

使用==比较Java中的浮点数有什么问题?

根据这个java.sun页面 ==是Java中浮点数的相等比较运算符.

但是,当我输入以下代码时:

if(sectionID == currentSectionID)
Run Code Online (Sandbox Code Playgroud)

进入我的编辑器并运行静态分析,我得到:"JAVA0078浮点值与==相比"

使用==比较浮点值有什么问题?这样做的正确方法是什么? 

java equality floating-accuracy

170
推荐指数
10
解决办法
15万
查看次数

使用==运算符比较float/double值

当我开始使用相等运算符比较两个浮点值时,我使用的代码审查工具会引用以下内容.什么是正确的方法以及如何做到这一点?是否有一个帮助函数(commons-*),我可以重用它?

描述

无法使用equals(==)运算符比较浮点值

说明

通过使用等式(==)或不等式(!=)运算符来比较浮点值并不总是准确的,因为舍入错误.

建议

比较两个浮点值以查看它们是否接近值.

float a;
float b;

if(a==b)
{
..
}
Run Code Online (Sandbox Code Playgroud)

java floating-point

18
推荐指数
3
解决办法
3万
查看次数

在java中操作和比较浮点

在Java中,没有精确表示浮点运算.例如这个java代码:

float a = 1.2; 
float b= 3.0;
float c = a * b; 
if(c == 3.6){
    System.out.println("c is 3.6");
} 
else {
    System.out.println("c is not 3.6");
} 
Run Code Online (Sandbox Code Playgroud)

打印"c不是3.6".

我对超过3位小数的精度感兴趣(#.###).我如何处理这个问题来乘以浮点数并可靠地比较它们?

java floating-point floating-accuracy

10
推荐指数
3
解决办法
3万
查看次数