我有含有大量浮點數的變量,說a = 999999999999999.99
如何將大浮點值轉換爲int?
當我在解釋輸入int(a)
,它返回1000000000000000
。 如何獲得像這樣的長號碼的999999999999999
輸出?
我有含有大量浮點數的變量,說a = 999999999999999.99
如何將大浮點值轉換爲int?
當我在解釋輸入int(a)
,它返回1000000000000000
。 如何獲得像這樣的長號碼的999999999999999
輸出?
999999999999999.99
是一個無法用浮點格式精確表示的數字,因此Python會妥協並選擇可表示的最接近的值。在這種情況下,這恰好是1000000000000000.這就是爲什麼將其轉換爲一個整數爲1000000000000000.
如果您需要更多精度比浮動可以提供,請考慮使用decimal.Decimal
。
>>> import decimal
>>> a = decimal.Decimal("999999999999999.99")
>>> a
Decimal('999999999999999.99')
>>> int(a)
999999999999999
變量'''a'''已經用問題中提到的值定義。該代碼已經包含一行'''a = 999999999999999.99'''。在你的代碼中,你正在'''decimal.Decimal()'''中聲明''''''的值。所以基本上,我需要從'''a'''獲取值並打印出來。 –
我傳遞給'decimal.Decimal'的值與問題中賦給'a'的值不同。我的值是一個字符串文字。這對保持精確度是必要的。如果你做'a = decimal.Decimal(999999999999999.99)',那麼'a'將會是'Decimal('1000000000000000')'。 – Kevin
如何將它轉換成字符串然後使用'''decimal.Decimal(string)'''? ''''''''已經被聲明爲浮點類型。 –
問題不是int
,問題是浮點值本身。您的值需要17位精度才能正確表示,而雙精度浮點值具有15至16位精度。因此,當您輸入它時,它會四捨五入到最接近的可表示浮點值,即1000000000000000.0
。當調用int
時,它不能做一件事 - 精度已經失去。
如果您需要完全表示這種類型的值,則可以使用decimal
數據類型,請記住,與常規浮點數相比,性能會受到影響。
'999999999999999.99 is 1000000000000000.0' – jonrsharpe