2016-06-15 2 views
0

Я всегда хочу отделить две последние цифры с десятичной точкой. (Точка) LКак отделить последние две цифры точкой в ​​Python

print("{:.2f}".format(300)); 

Выход:

300.00 

Ожидаемые результаты:

3.00 

Следующая

print("{:.2f}".format(333333300)); 

Выход:

333333300.00 

Ожидаемый результат:

3333333.00 

Как я могу изменить свой код так, что я получаю ожидаемый выход вместо этого?

+3

Почему вы ожидаете Python форматировать 300 как 3.00? Они разные. Форматирование может только изменить * представление * числа, а не его значение. – SiHa

+0

@Mounarajan Вот как язык, на его взгляд, должен работать. Точность, которую вы даете работе, работает на поплавках, т. Е. 300.34546, тогда двузначная точность будет печатать 300.34, если вы дадите ей int, она добавит два нуля, например 300.00 – wind85

+0

. Разделите число на 100 первых? – Ben

ответ

2

300.00 представляет собой числовое значение 300. 3.00 представляет собой число номеров 3. Это два разных значения. Невозможно, чтобы Python представлял 300 как 3.

Предполагая, что вы действительно хотите напечатать 3.00 (что для почти всех вокруг означает 3, не 300), то вы должны разделить 300 на 100.

print("{:.2f}".format(300/100.0)) 
+0

если я использую эту печать («{:. 2f}». Format (2990/100)), я получаю этот результат 29,00, но ожидаемый 29,90 – Mounarajan

+0

Право. Вы используете Python 2 и 300/100 интерпретируется как целочисленное деление. Вы должны делить на 100.0, чтобы заставить float-деление. Ответ обновлен. –

0

Используйте числовое значение вы на самом деле хотите вывести, т.е. не добавить «0» вы хотите в строковом представлении.

print("{:.2f}".format(3)) 

Это строка форматирования, которая делает добавить «0» для вас, когда он создает строковое представление числового значения, в зависимости от заданной строки форматирования.

+0

если я использую эту печать («{:. 2f}». Format (2990)), я получаю этот результат 2990.00 , но ожидается 29.90 – Mounarajan

0
def f(n): 
    a = divmod(n,100) 
    if a[1] < 10: 
     print("{}.0{}".format(a[0],a[1])) 
    else: 
     print("{}.{}".format(a[0],a[1])) 
+1

Объяснение вашего кода повысит качество вашего сообщения. –

+1

divmod (a, b). Возьмите два (не сложных) числа в качестве аргументов и верните пару чисел, состоящих из их частного и остального при использовании длинного деления. Результат будет таким же, как (a // b, a% b) . Кортеж a [0] получает // b, a [1] получает% b.если a [1] <10, например 3001,3009, a [1] будет 1 и 9, поэтому при формировании он должен добавить 0 –

0

В Python 2.6:

def myPrint(x): 
    print("{0:.2f}".format(x/100.00)); 

myPrint(2990); 

29,90

Смежные вопросы