Как мне изменить число с плавающей запятой на два десятичных числа с запятой в качестве разделителя десятичных знаков в python? - PullRequest
15 голосов
/ 07 октября 2009

у меня есть поплавок: 1.2333333

Как мне изменить его на двух десятичное число с запятой в качестве разделителя десятичной точки, например, 1,23?

Ответы [ 3 ]

12 голосов
/ 07 октября 2009

Чтобы получить два десятичных знака, используйте

'%.2f' % 1.2333333

Чтобы получить запятую, используйте replace():

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

Второй вариант будет изменить локаль на другое место, где используется запятая, а затем использовать locale.format():

locale.setlocale(locale.LC_ALL, 'FR')
locale.format('%.2f', 1.2333333)
8 голосов
/ 07 октября 2009

Модуль 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
2 голосов
/ 07 октября 2009

Если вы не хотите связываться с локалью, вы, конечно, можете выполнить форматирование самостоятельно. Это может послужить отправной точкой:

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

Обратите внимание, что при этом всегда будет обрезаться дробная часть (то есть 1.04999 будет печататься как 1,04).

...