我很清楚在两个浮点数上使用==
运算符不起作用/不好的做法,但是据我所见,在两个浮点数上使用>
和<
运算符浮点数应有效。但是,在我的程序中,当我将一个非常小的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的指数可能较小,因为它不是用小数部分初始化的,这会影响比较吗?什么是解决方案/最佳实践?
预先感谢。
答案 0 :(得分:0)
对不起,我是基本错误,不小心在...中留下了一些评论
答案 1 :(得分:-1)
当您将浮点数乘以小于1但大于0的数字时,最终将等于0。可能发生的情况是您的某些乘数序列达到了这一点,而其他乘数序列却没有。