在600行長碼中,我有一部分代碼計算奇怪的東西。Python計算:浮點數和整數
idl = 0
print type(dl), dl
idl = int(dl*10)+1
print idl
這將返回:
<type 'float'> 0.1
1
該計算是在我的代碼定義完成。 這顯然不是預期的結果。奇怪的是,當我在一個單獨的Python文件中的代碼複製以上:
idl = 0
dl = 0.1
print type(dl), dl
idl = int(dl*10)+1
print idl
我得到:
<type 'float'> 0.1
2
可能是什麼這個問題的根源?我已經提取了這些部分,使問題變得簡單,但如果您想要,我可以提供更多信息。
鑄造到int不會繞過你的數字,而是截斷它。正因爲如此,你可以得到0.999999而不是1,所以當投射到int時它會給出0。我不確定爲什麼結果會在不同的地方有所不同,儘管...... – sashkello
也許'dl'的值不像第一種情況那樣接近.1,但是Python只打印它以限制精確。我建議你以更精確的方式打印它(我不熟悉Python語法),或者打印'dl-.1'來查看其差異。正如sashkello所指出的那樣,如果'dl'略小於'.1',那麼'dl * 10'略小於1,轉換爲'int'會將其截斷爲零。 –