Как изменить мой 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).
Ответ 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).