天天看點

記C語言浮點數運算處理 "坑" 一則

看一小段C語言程式:

在你心目中, 變量 I 是怎樣的結果?

如果你理所當然地認為是3的話, 那麼你就錯了~~~

實際結果應該是2.   為什麼?

簡而言之, x在記憶體的值并不是精确的1.3, 實際上可能是1.29999999......

因為在計算機組成原因中有說過, 浮點數無法被準确地表示出來, 隻能是一個非常精确的值..

就算現在你已經知道這個"坑"了, 但還是不小心會犯, 是以務必要牢記~~~

處理辦法:

1. 使用精度更高的double.

2. 取整之前四舍五入(加上一個非常小的0.00000.......005, 但要注意浮點數的精度範圍), 就像下面這樣.

同時也要值得注意的是, 這個四舍五入的操作隻能用于取整的時候, 你不能加在原浮點值上面改變了原來的浮點數值.

女孩不哭 @ cnblogs.com/memset @ 2014-05-02