在Java中对浮点数使用>和<比较的正确方法?

时间:2019-04-12 19:01:54

标签: java floating-point comparison

我很清楚在两个浮点数上使用==运算符不起作用/不好的做法,但是据我所见,在两个浮点数上使用><运算符浮点数应有效。但是,在我的程序中,当我将一个非常小的float值与零进行比较时,尽管它实际上已在控制台窗口中正确打印了一个较小的数字,但它似乎只是将较小的值四舍五入为零。 这是精简的基本示例代码,以显示我的意思:

float f1 = 0;
float f2 = 5.063425E-12; //or something similarly small
//f2 isn't actually assigned like this, this is a typical value
//as it would be displayed in the console window. it is actually
//formed by a series of multiplications which I haven't shown
//here for simplicity.
if(f2 > f1) {
   System.out.println("Success!");
} else {
   System.out.println("Failed");
}

当前,即使f2适度大于零,它也会输出“失败”。 f1的指数可能较小,因为它不是用小数部分初始化的,这会影响比较吗?什么是解决方案/最佳实践? 预先感谢。

2 个答案:

答案 0 :(得分:0)

对不起,我是基本错误,不小心在...中留下了一些评论

答案 1 :(得分:-1)

当您将浮点数乘以小于1但大于0的数字时,最终将等于0。可能发生的情况是您的某些乘数序列达到了这一点,而其他乘数序列却没有。