我想将字符串转换为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'不能处理区域设置。对我来说,这看起来不像一个黑客。 –