Как изменить мой float на два десятичных числа с запятой в качестве разделителя десятичной точки в python?
У меня есть float: 1.2333333
Как изменить его на два десятичных числа с запятой в качестве разделителя десятичной точки, например 1,23?
Ответы
Ответ 1
Чтобы получить два десятичных знака, используйте
'%.2f' % 1.2333333
Чтобы получить запятую, используйте replace()
:
('%.2f' % 1.2333333).replace('.', ',')
Второй вариант: изменить локаль в какое-то место, где используется запятая, а затем использовать locale.format()
:
locale.setlocale(locale.LC_ALL, 'FR')
locale.format('%.2f', 1.2333333)
Ответ 2
Модуль 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
Ответ 3
Если вы не хотите связываться с языковой версией, вы можете, конечно, сделать форматирование самостоятельно. Это может служить отправной точкой:
def formatFloat(value, decimals = 2, sep = ","):
return "%s%s%0*u" % (int(value), sep, decimals, (10 ** decimals) * (value - int(value)))
Обратите внимание, что это всегда будет усекать часть дроби (то есть 1.04999 будет печатать как 1,04).