float a = (float) 3.32 ;
float b = (float) 4.32 ;
System.out.println(b%a);
輸出爲1.0000002Java的浮點模誤差
爲什麼?
float a = (float) 3.32 ;
float b = (float) 4.32 ;
System.out.println(b%a);
輸出爲1.0000002Java的浮點模誤差
爲什麼?
首先如何聲明浮點值作爲變量?
float val=3.23f;
關於您的結果。 這是float
的典型性質。
如何得到正確答案?嘗試這種方式
BigDecimal a = new BigDecimal("3.32") ;
BigDecimal b = new BigDecimal("4.32") ;
System.out.println(b.divideAndRemainder(a)[1]); // 1st element is remainder
輸出地說:
1
您可能需要閱讀有關divideAndRemainder()
@downvoter,無法看到您的評論。 – 2014-09-10 09:29:11
我已投稿風水:) – 2014-09-10 09:33:49
浮點類型是根據其性質不準確的。這樣的小錯誤是不可避免的。 – Bohemian 2014-09-10 09:22:54
http://en.wikipedia.org/wiki/Floating_point – user1516873 2014-09-10 09:23:06
請參閱[每個程序員應該瞭解的浮點數](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html )和http://floating-point-gui.de/basic/ – 2014-09-10 09:28:09