我遇到此代碼的問題! 我想在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 –
謝謝!我之前沒有注意到這個問題。問題在於數字表示的二進制形式。 –