我遇到此代码的问题! 我想在java中运行代码,但答案似乎很奇怪。Java数字格式窘境
float a=0.1F;
float b=0.2F;
if((a+b)==0.3){
System.out.println("True");
}
else{
System.out.println("False");
}
答案是:假 但理论上它应该返回True。 如果我们使用a和b的值如0.15和0.15或者0.05和0.25,那么函数返回True。 我很困惑。 我已经阅读过Java/JavaScript等语言实现IEEE-754数字格式的地方!如果是这样,那么这是什么格式和代码有什么问题?无论如何改变数字格式?
这会有帮助吗? (a + b)==。3F? –
可能的Dupe http://stackoverflow.com/questions/7289361/double-arithmetic-and-equality-in-java –
谢谢!我之前没有注意到这个问题。问题在于数字表示的二进制形式。 –