Как я могу отформатировать десятичное число, чтобы всегда показать 2 десятичных разряда?

Значки не смелее белого цвета.

Скорее всего, именно ваш глаз воспринимает их таким образом, потому что белый обеспечивает больший контраст с током background-color, чем черный.

Но с технической точки зрения глифы шрифтов имеют одинаковые размеры независимо от цвета. Фактически, принимая во внимание современную технологию шрифтов, невозможно обеспечить различные формы на основе текущего font-color.

Однако, несмотря на то, что на уровне страницы глифы шрифтов всегда имеют одинаковый размер, возможно, что либо используемый браузер, либо операционная система модифицируют визуализированный вывод на основе алгоритмов, направленных на повышение читабельности текста .

Простое отключение этих опций (на уровне браузера или операционной системы, в зависимости от того, где они определены) должно решить проблему (где под «проблема» мы подразумеваем: «визуализированная форма имеет различную форму»). Размеры в снимках, взятых с той же страницы ").

214
задан orokusaki 17 April 2015 в 11:01
поделиться

4 ответа

Я полагаю, что вы, вероятно, используете Decimal() объекты из decimal модуля? (Если вам нужны ровно две цифры точности за десятичной точкой с произвольно большими числами, вы определенно должны ими быть, и это то, что предполагает заголовок вашего вопроса...)

Если да, то в разделе Decimal FAQ docs есть пара вопрос/ответ, которая может быть вам полезна:

Q. В приложении с фиксированной точкой с двумя знаками после запятой, некоторые входы имеют много знаков после запятой и нуждаются в округлении. Другие не должны иметь лишних цифр и должны быть подтверждены. Какие методы следует использовать?

A. Метод quantize() округляет до фиксированного числа десятичных разрядов. Если установлена неточная ловушка, то она также полезна для проверки:

>>> TWOPLACES = Decimal(10) ** -2       # same as Decimal('0.01')
>>> # Round to two places
>>> Decimal('3.214').quantize(TWOPLACES)
Decimal('3.21')
>>> # Validate that a number does not exceed two places
>>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Decimal('3.21')
>>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Traceback (most recent call last):
   ...
Inexact: None

Следующий вопрос читается

Q. Если у меня есть действительные два входа в место, как мне поддерживать этот инвариант во всем приложении?

Если вам нужен ответ на этот вопрос (наряду с множеством другой полезной информации), смотрите в вышеупомянутом разделе документации. Также, если вы храните ваши десятичные с двумя цифрами точности за десятичной точкой (то есть столько точности, сколько необходимо, чтобы все цифры были слева от десятичной точки и две справа от нее, и не более... ), затем преобразование их в строки с помощью str будет работать отлично:

str(Decimal('10'))
# -> '10'
str(Decimal('10.00'))
# -> '10.00'
str(Decimal('10.000'))
# -> '10.000'
101
ответ дан 23 November 2019 в 04:22
поделиться

Самым Легким путем пример, чтобы показать Вам, как сделать, который является:

Код:

>>> points = 19.5 >>> total = 22 >>>'Correct answers: {:.2%}'.format(points/total) '

Вывод: Корректные ответы: 88,64%

0
ответ дан 23 November 2019 в 04:22
поделиться

Вы можете использовать строковый оператор форматирования , так как:

num = 49
x = "%.2f" % num  # x is now the string "49.00"

Я не уверен, что вы имеете в виду под "эффективным" - это почти наверняка а не узкое место в вашем приложении. Если Ваша программа работает медленно, профилируйте ее сначала, чтобы найти горячие точки, а затем оптимизируйте их.

29
ответ дан 23 November 2019 в 04:22
поделиться

Раздел Операции форматирования строк документации Python содержит ответ, который вы ищете. Вкратце:

"%0.2f" % (num,)

Некоторые примеры:

>>> "%0.2f" % 10
'10.00'
>>> "%0.2f" % 1000
'1000.00'
>>> "%0.2f" % 10.1
'10.10'
>>> "%0.2f" % 10.120
'10.12'
>>> "%0.2f" % 10.126
'10.13'
132
ответ дан 23 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: