Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2017 06:09:07

rodion1010
Зарегистрирован: 2017-03-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа не выводит ожидаемое решение

Задача: Дано положительное действительное число X. Выведите его дробную часть.

Решение:

 x = float(input())
print(x - int(x))
Тестирую с числом 17.9 и получаю ответ 0.8999999999999986, хотя по логике должно быть 0.9

Почему так происходит?

Офлайн

#2 Март 30, 2017 07:01:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Программа не выводит ожидаемое решение

Потому что все действия с плавающими числами выполняются приближенно.



Офлайн

#3 Март 30, 2017 08:43:11

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Программа не выводит ожидаемое решение

rodion1010
Дано положительное действительное число X. Выведите его дробную часть.

А здесь вообще лучше со строками работать…
Если вы вводите число с клавиатуры, то input (в Python 3) возвращает строку. Значит дробная часть нашего числа – есть просто второй элемент “разреза” этой строки по символу “точка”.

 x = input('Enter positive floating point number:')
print( 'Fractional part of your number is ', '.' + x.split('.')[1] if len(x.split('.')) > 1 else 'absent, sorry...')

В Python2 input() следует заменить на raw_input().

Офлайн

#4 Март 30, 2017 10:02:49

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Программа не выводит ожидаемое решение

 from decimal import Decimal
x = Decimal('17.9')
print(x - int(x))

Офлайн

#5 Март 31, 2017 06:03:39

rodion1010
Зарегистрирован: 2017-03-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа не выводит ожидаемое решение

Спасибо! Очень интересные решения.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version