Печать номера с десятичной точкой - PullRequest
0 голосов
/ 28 января 2012

Ну, у меня проблемы с печатью чисел с десятичной точкой.Когда я запускаю python и прошу его сделать деление, в котором результатом должно быть число с десятичной точкой, он не печатает десятичную точку.Например, я только что сделал этот алгоритм:

print 'Report card calculation'
grade1 = input ('Insert the first grade: ')
grade2 = input ('Insert the second grade: ')
grade3 = input ('Insrt the third grade: ')

media = (grade1 + grade2 + grade3) / 3
print 'Your final result is', media

Но когда он печатает «носитель», число, которое должно иметь десятичную точку, не идет с десятичной точкой.Как я могу это исправить?

Ответы [ 4 ]

2 голосов
/ 28 января 2012

Вверху вашего файла добавьте:

from __future__ import division

или используйте 3.0 вместо 3. В Python 2 деление двух целых чисел всегда дает целое число.

2 голосов
/ 28 января 2012

Самое простое изменение: разделите на 3.0 вместо 3:

media = (grade1 + grade2 + grade3) / 3.0

Это обеспечит, что значение, присвоенное media, будет с плавающей точкой, даже если три переменные ранга содержат целые числа.

1 голос
/ 28 января 2012

Когда вы делите два целых числа в Python 2.x, результатом будет целое число.Из документации по Числовые типы :

Для целочисленного деления (простого или длинного) результатом является целое число.Результат всегда округляется до минус бесконечности: 1/2 равно 0, (-1) / 2 равно -1, 1 / (- 2) равно -1, а (-1) / (- 2) равно 0. Обратите внимание, чторезультатом является длинное целое число, если любой из операндов является длинным целым, независимо от числового значения.

Чтобы получить желаемое поведение, добавьте from __future__ import division в верхнюю часть вашего модуля, чтобы использовать Поведение деления Python 3 или заменить один числитель или знаменатель (или оба) на число с плавающей точкой:

# either of the following would work
media = float(grade1 + grade2 + grade3) / 3
media = (grade1 + grade2 + grade3) / 3.0
1 голос
/ 28 января 2012

Ваша операция обрабатывается как целочисленное деление, попробуйте использовать 3.0 вместо 3, посмотрите, что будет потом.

...