Значки не смелее белого цвета.
Скорее всего, именно ваш глаз воспринимает их таким образом, потому что белый обеспечивает больший контраст с током background-color
, чем черный.
Но с технической точки зрения глифы шрифтов имеют одинаковые размеры независимо от цвета. Фактически, принимая во внимание современную технологию шрифтов, невозможно обеспечить различные формы на основе текущего font-color
.
Однако, несмотря на то, что на уровне страницы глифы шрифтов всегда имеют одинаковый размер, возможно, что либо используемый браузер, либо операционная система модифицируют визуализированный вывод на основе алгоритмов, направленных на повышение читабельности текста .
Простое отключение этих опций (на уровне браузера или операционной системы, в зависимости от того, где они определены) должно решить проблему (где под «проблема» мы подразумеваем: «визуализированная форма имеет различную форму»). Размеры в снимках, взятых с той же страницы ").
Я полагаю, что вы, вероятно, используете 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'
Самым Легким путем пример, чтобы показать Вам, как сделать, который является:
Код:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
'
Вывод: Корректные ответы: 88,64%
Вы можете использовать строковый оператор форматирования , так как:
num = 49
x = "%.2f" % num # x is now the string "49.00"
Я не уверен, что вы имеете в виду под "эффективным" - это почти наверняка а не узкое место в вашем приложении. Если Ваша программа работает медленно, профилируйте ее сначала, чтобы найти горячие точки, а затем оптимизируйте их.
Раздел Операции форматирования строк документации 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'