引例:
double a=19*3.3;
System.out.print(a);
結果為62.9999996,不是62.7;這里不單純是因為給的是double類型
(1) 62.7 和 62.699999999999996 實際意義上是一樣的,double是一個不精確的表示
(2) double用於表示連續數,int表示離散數。什么叫連續數,看下面的解釋。
/* 小知識:連續數 與 離散數 *
* 連續數:表示一個連續的值,本身是不精確的。
* 比如,買了1000克豬肉,和買了999.999999克鍺肉,
* 並無區別。因為1000克本身是一個不精確的測量值,有一定的誤差。
* 再比如說,你在高速上開車,120km就算超速。然而,測速軟件不會剛好卡在120km就判定超速的,
* 因為誰都知道速度測量有誤差。一般會在大於 120 + 10 左右才算你超速。
* 你作為程序員,在連續數的判斷上必須要加上誤差范圍,不然會被人投訴的。
* 離散數:表示離散的值。如1只豬,2只豬。
* 離散數用int表示,可以精確比較。比如,小王家有m只豬,小李家有n只豬,則m和n 可以精確比較。
* 連續數用double表示,不能精確比較。比如,小王身高1.8000米,小李身高1.79999米,
* 然后你說小王比小李高,人家能服氣嗎?尺子的誤差那么大!
* 小知識:1.0 = 0.999999... 你明白嗎?
* 因為1/3 = 0.3333333
* 所以 3 * 1/ 3 = 0.999999 = 1
*/