我想將字符串轉換爲python decimal。如何將字符串轉換爲德語區域設置的Python Decimal(用逗號代替點)
這工作
from decimal import *
mystr = '123.45'
print(Decimal(mystr))
但是,當我想用千個分隔符和場景,事實並非如此。 轉換爲浮動工作正常。
from locale import *
setlocale(LC_NUMERIC,'German_Germany.1252')
from decimal import *
mystr = '1.234,56'
print(atof(mystr))
print(Decimal(mystr))
返回float和錯誤
1234.56
InvalidOperation: [<class 'decimal.ConversionSyntax'>]
是否有將字符串轉換不通過浮動或hackier解決方案手動轉換它正確的方式? FYA,我目前哈克的解決辦法是:
print(Decimal(f'{atof(mystr):2.2f}'))
有什麼錯'小數(atof(mystr))'? (注意你的測試結果不匹配:在這裏我得到'1234.56') –
@ Jean-FrançoisFabre我已經使用過了,並且在添加我生成的小數時會產生令人討厭的舍入錯誤。對我來說,它也感覺像是一個黑客... – 576i
是的,有一些舍入誤差,但它是由於浮點表示,它不是真正的四捨五入。只是'Decimal'不能處理區域設置。對我來說,這看起來不像一個黑客。 –