2013-10-25 47 views
1

這不是一個真正的大問題,但我很好奇,我想知道爲什麼在像「1.1 - 1」(1.1爲單數,1爲整數)之後,結果等於0.09999而不是1(自然地,1.1-1 = 0.1)。爲什麼一個變量給出0.09999而不是0.1?

我用一個「1.0」替換了整數「1」,它的工作正常。

謝謝,對不起我的英語。

A.

+1

搜索「浮點(或雙精度)格式」和「浮點(或雙精度)精度損失」。你也可以使用'decimal'格式。 – SJuan76

+2

由於浮點(有限)精度。閱讀[this](https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf) – memo1288

+0

謝謝你的回答! –

回答

1

你需要知道數據是如何存儲在內存中,先看看整數例如intshortunsigned long long它們存儲在內存中,每個不同的位配置意味着不同的數字,所以它的罰款,同樣的情況是與float號碼,不同的位配置意味着不同的號碼,所以讓我們看看類型的限制。比較intfloat他們都是32位數字。 int限制是–2147483648 to 2147483647 4294967296不同的值,因此,如何float

#define FLT_MAX 3.402823466e+38F /* max value */ 
#define FLT_MIN 1.175494351e-38F /* min positive value */ 

所以當你看到範圍是多少更廣,但不同值的數量是相同的,所以你不能有這樣的精度好,你也可以閱讀更多有關float標準IEEE754 herehere

相關問題