python 区域设置 - 德语 (de_DE) 设置的小数点错误

问题描述 投票:0回答:2

我在此区域设置上得到了错误的小数分隔符。 短代码示例:

import locale
print locale.getdefaultlocale()[0]
print "decimal_point:", locale.localeconv()["decimal_point"]
print (float(1)/float(2))

结果是:

de_DE
decimal_point: .
0.5

(小数分隔符是点而不是逗号)。 Python 2.7

python-2.7 locale decimal-point
2个回答
2
投票

您需要致电

locale.setlocale(locale.LC_ALL, '')
。正如文档指出的:

根据 POSIX,未调用过的程序

setlocale(LC_ALL, '')
使用可移植的
'C'
语言环境运行。打电话
setlocale(LC_ALL, '')
让它使用由 LANG 变量定义的默认语言环境。自从 我们不想干扰当前的区域设置,因此 以上述方式模拟行为。


0
投票

我在 Windows 10 和 Python 3.11 上也遇到同样的问题。 我的设置中默认的小数点是 ,因为这是德国的设置 但按照本解决方案中的描述更改区域设置不起作用。

这是我的代码 导入语言环境

locale.setlocale(category=locale.LC_ALL, locale ="")

x = 2,5 打印(x) 打印(类型(x))

y = 2.5 打印(y) 打印(类型(y))

这就是结果:

Win32 上的 Python 3.11.9(tags/v3.11.9:de54cf5,2024 年 4 月 2 日,10:12:12)[MSC v.1938 64 位 (AMD64)] 输入“help”、“copyright”、“credits”或“license()”以获取更多信息。

= 重新启动:C:\Users\Paul\Documents\Python est_locale.csv (2, 5) 2.5

© www.soinside.com 2019 - 2024. All rights reserved.