Я бы сделал это, подталкивая дополнительный элемент (например, span) по входу с помощью position: relative
и left: -20px
.
Затем некоторые padding-right
на входном элементе, чтобы гарантировать, что вход пользователя не будет перекрываться с новым элементом.
Пример здесь:
Одним словом, вы не можете.
3.65
нельзя представить в точности как float
. Число, которое вы получаете, является ближайшим к 3.65
числом, которое имеет точное представление float
.
Разница между (более старым?) Python 2 и 3 обусловлена форматированием по умолчанию.
Я вижу следующее как в Python 2.7.3, так и в 3.3.0:
In [1]: 3.65
Out[1]: 3.65
In [2]: '%.20f' % 3.65
Out[2]: '3.64999999999999991118'
Точный тип данных в десятичном формате см. В decimal.Decimal
.
Простой способ сделать это с помощью встроенного раунда.
round(2.6463636263,2)
будет отображаться как 2.65
.
В комментариях указывается, что цель состоит в том, чтобы напечатать до 2 десятичных знаков .
Есть простой ответ для Python 3:
>>> num=3.65
>>> "The number is {:.2f}".format(num)
'The number is 3.65'
или эквивалентно с f-строками (Python 3.6 +):
>>> num = 3.65
>>> f"The number is {num:.2f}"
'The number is 3.65'
Как всегда, значение с плавающей точкой это приближение:
>>> "{}".format(f)
'3.65'
>>> "{:.10f}".format(f)
'3.6500000000'
>>> "{:.20f}".format(f)
'3.64999999999999991118'
Я думаю, что большинство сценариев использования будет хотеть работать с плавающей точкой, а затем только печатать с определенной точностью.
Тем, кто хочет, чтобы сами числа были сохранены с точностью до 2 десятичных знаков точности, я предлагаю использовать тип десятичный . Подробнее о точности с плавающей точкой для тех, кто заинтересован.
Попытайтесь понять с помощью этой функции ниже, используя python3
def floating_decimals(f_val, dec):
prc = "{:."+str(dec)+"f}" #first cast decimal as str
print(prc) #str format output is {:.3f}
return prc.format(f_val)
print(floating_decimals(50.54187236456456564, 3))
Вывод: 50.542
Надеюсь, это поможет вам!
Попробуйте это:
num = input("Please input your number: ")
num = float("%0.2f" % (num))
print(num)
Я считаю, что это намного проще. Для 1 десятичного знака используйте %0.1f
. Для 2 десятичных знаков используйте %0.2f
и т. Д.
Или, если вы хотите уменьшить все до 2 строк:
num = float("%0.2f" % (float(input("Please input your number: "))))
print(num)