想像一下…

考慮以下題目(本單元的課堂題):

用以前的知識,這題怎麼寫?

數學很簡單:折價百分比就是 \dfrac{10000 - B}{100}。照抄成程式:

int B;
cin >> B;
cout << (10000 - B) / 100 << '\n';

輸入 8737 試試——手算答案是 12.63,程式卻印出 12。小數點後的 .63 整個蒸發了!

兇手你其實認識:上冊 2.6 就講過,整數除法會把小數部分直接丟掉。到目前為止我們的世界裡只有整數,這件事還算「特性」;但這題的答案就是一個小數——用整數怎麼硬湊都湊不出 12.63

我們需要一個能裝小數的型態。這就是本單元的主角:浮點數(floating-point number)。不過先說好,浮點數不是「會裝小數的完美整數」——它有自己的脾氣:

  • 印出來的樣子會變:有時是 12.63,有時變成 1.002e+06 這種怪東西。
  • 0.1 + 0.2 竟然不等於 0.3
  • 數字夠大時,連「整數」它都存不準。

這些都不是 bug,而是浮點數與生俱來的設計取捨。本單元帶你搞懂它的規則、學會控制它的輸出、認識它的誤差,最後學會判斷:什麼時候該用浮點數,什麼時候該逃回整數的世界