2013-08-01 22 views

回答

8

0.1+0.2確切地說不是0.3。試試這個代碼:

print((0.1+0.2)==0.3) 
print(string.format("%.17g",0.1+0.2)) 

我假設你正在使用printio.write打印這些值。在這種情況下,Lua只是不打印所有數字。在內部,Lua使用全長本地浮點表示。技術上的解釋是printio.write格式編號採用luaconf.h中定義的LUA_NUMBER_FMT中的格式,默認爲"%.14g"

+0

順便說一句,爲什麼這個參數不是「%.16g」(所以所有可以正確存儲在double中的整數都能正確顯示)? –

+0

@EricPostpischil - 我在詢問'luaconf.h'中定義的'LUA_NUMBER_FMT'值,而不考慮這個SO問題。爲什麼它被選爲「%.14g」? –

+0

@EgorSkriptunoff:啊,我明白了。 –