看一小段C語言程式:
在你心目中, 變量 I 是怎樣的結果?
如果你理所當然地認為是3的話, 那麼你就錯了~~~
實際結果應該是2. 為什麼?
簡而言之, x在記憶體的值并不是精确的1.3, 實際上可能是1.29999999......
因為在計算機組成原因中有說過, 浮點數無法被準确地表示出來, 隻能是一個非常精确的值..
就算現在你已經知道這個"坑"了, 但還是不小心會犯, 是以務必要牢記~~~
處理辦法:
1. 使用精度更高的double.
2. 取整之前四舍五入(加上一個非常小的0.00000.......005, 但要注意浮點數的精度範圍), 就像下面這樣.
同時也要值得注意的是, 這個四舍五入的操作隻能用于取整的時候, 你不能加在原浮點值上面改變了原來的浮點數值.
女孩不哭 @ cnblogs.com/memset @ 2014-05-02