如何在Python中将浮点数转换为以逗号为小数点的两位小数?

18 投票
3 回答
29417 浏览
提问于 2025-04-15 14:52

我有一个浮点数:1.2333333

我该怎么把它变成只有两位小数的数字,并且用逗号作为小数点,比如变成1,23?

3 个回答

2

如果你不想去调整地区设置,当然可以自己来格式化。这可以作为一个起点:

def formatFloat(value, decimals = 2, sep = ","):
  return "%s%s%0*u" % (int(value), sep, decimals, (10 ** decimals) * (value - int(value)))

请注意,这样做会总是截断小数部分(也就是说,1.04999 会显示为 1,04)。

8

locale模块可以帮助你按照当地的格式来读取和写入数字。

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'sv_SE.UTF-8'
>>> locale.format("%f", 2.2)
'2,200000'
>>> locale.format("%g", 2.2)
'2,2'
>>> locale.atof("3,1415926")
3.1415926000000001
16

如果你想要保留两位小数,可以使用下面的代码:

'%.2f' % 1.2333333

如果你想要用逗号来替代小数点,可以使用 replace() 方法:

('%.2f' % 1.2333333).replace('.', ',')

还有一个方法是 更改地区设置,选择一个使用逗号的地方,然后使用 locale.format() 方法:

locale.setlocale(locale.LC_ALL, 'FR')
locale.format('%.2f', 1.2333333)

撰写回答