Python 3 Float Десятичные точки / Точность

Я бы сделал это, подталкивая дополнительный элемент (например, span) по входу с помощью position: relative и left: -20px.

Затем некоторые padding-right на входном элементе, чтобы гарантировать, что вход пользователя не будет перекрываться с новым элементом.

Пример здесь:

https : //jsfiddle.net/peg3mdsg/1/

29
задан darksky 26 January 2013 в 18:31
поделиться

5 ответов

Одним словом, вы не можете.

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 .

22
ответ дан NPE 26 January 2013 в 18:31
поделиться

Простой способ сделать это с помощью встроенного раунда.

round(2.6463636263,2) будет отображаться как 2.65.

32
ответ дан Martin Vseticka 26 January 2013 в 18:31
поделиться

В комментариях указывается, что цель состоит в том, чтобы напечатать до 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 десятичных знаков точности, я предлагаю использовать тип десятичный . Подробнее о точности с плавающей точкой для тех, кто заинтересован.

29
ответ дан Andrew E 26 January 2013 в 18:31
поделиться

Попытайтесь понять с помощью этой функции ниже, используя 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

Надеюсь, это поможет вам!

2
ответ дан ArifMustafa 26 January 2013 в 18:31
поделиться

Попробуйте это:

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)
3
ответ дан S.Ahmed 26 January 2013 в 18:31
поделиться
Другие вопросы по тегам:

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