左零

2013-09-24 47 views
1

我注意到後續句子左零

echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*011}' 

給9.0999999999999996e + 00

而這一次

echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*11}' 

給8.9000000000000004e + 00

注意11中左側的零點。這個結果的區別是否正確?

由於

+0

在這兩種情況下,我得到'8.9000000000000004e + 00'。我正在研究'mawk 1.3.3'。 – fedorqui

回答

4

這是因爲011被解析爲一個八進制值。如果你

$ echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*9}' 
9.0999999999999996e+00 

你得到相同的結果,因爲9十進制是八進制011

+1

感謝您的信息。這是一個不容易看到的陷阱。 – Jotne

+0

非常感謝您的回答,抱歉延遲檢查解決方案標誌。 – alexis