gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:36:20 24 4
gpt4 key购买 nike

当我开始使用相等运算符比较两个浮点值时,我使用的代码审查工具会出现以下问题。什么是正确的方法以及如何去做?有没有我可以重用的辅助函数 (commons-*)?

描述

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

解释

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

推荐

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

float a;
float b;

if(a==b)
{
..
}

最佳答案

IBM has a recommendation用于比较两个 float ,使用除法而不是减法 - 这使得选择适用于所有输入范围的 epsilon 变得更加容易。

if (abs(a/b - 1) < epsilon)

至于 epsilon 的值,我会使用 5.96e-08,如 this Wikipedia table 中给出的那样,或者可能是该值的 2 倍。

关于java - 使用 == 运算符比较 float/double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com