我在此区域设置上得到了错误的小数分隔符。 短代码示例:
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
您需要致电
locale.setlocale(locale.LC_ALL, '')
。正如文档指出的:
根据 POSIX,未调用过的程序
使用可移植的setlocale(LC_ALL, '')
语言环境运行。打电话'C'
让它使用由 LANG 变量定义的默认语言环境。自从 我们不想干扰当前的区域设置,因此 以上述方式模拟行为。setlocale(LC_ALL, '')
我在 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)