猿问

使用==运算符比较浮点/双精度值

当我开始使用equals运算符比较两个float值时,我使用的代码查看工具会抱怨以下内容。正确的方法和方法是什么?有没有可以重用的辅助函数(commons- *)?


描述


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


说明


由于使用舍入误差,因此使用相等(==)或不相等(!=)运算符比较浮点值并不总是准确的。


建议


比较两个浮点值,看它们是否接近。


float a;

float b;


if(a==b)

{

..

}


UYOU
浏览 357回答 3
3回答

猛跑小猪

IBM推荐使用除法而不是减法比较两个浮点数-这样可以更容易地选择适用于所有输入范围的epsilon。if (abs(a/b - 1) < epsilon)至于epsilon的值,我将使用Wikipedia表中5.96e-08给出的值,或者可能是该值的2倍。
随时随地看视频慕课网APP

相关分类

Java
我要回答