請explane爲什麼下面的程序沒有給予正確的輸出。
class Test
{
public static void main(String aa[])
{
float a=16.15 f;
float b =10.0f;
float c =a-b;
System.out.println(c);
}
}
/****************/ 出認沽:-6.1499996
請explane爲什麼下面的程序沒有給予正確的輸出。
class Test
{
public static void main(String aa[])
{
float a=16.15 f;
float b =10.0f;
float c =a-b;
System.out.println(c);
}
}
/****************/ 出認沽:-6.1499996
這不是能夠存儲彩車一個完全正常的結果小數值正好。
因爲基數爲2的浮點數不能準確地表示16.15,因此減法的結果不完全是-6.15。
問題在於花車自己,而不是你的代碼,按http://en.wikipedia.org/wiki/IEEE_floating-point_standard
對於這種情況,考慮或者使用double
S或BigDecimal
小號
http://docs.oracle.com/cd/ E19957-01/806-3568/ncg_goldberg.html – Mysticial
浮點計算不能得到精確的.15精度。 – kosa
對於這類問題應該有一些規範的標準答案,沒有一天沒有一天的時間過去了,他們沒有一打:'( – fvu