Форум сайта python.su
0
Привет. Есть число типа float 24187.0. Мне надо перенести запятую на 3 знака влево, чтобы получилось 24.187. Чтобы это сделать я делю число 24187.0 на 1000, но вместо ожидаемого результата получаю 24.187000000000001. Тогда пробую применить округление до первой цифры после запятой: round(24187.0 / 1000, 1). Но получаю 24.199999999999999.
Подскажите, что я неправильно делаю. Может есть ещё какие-нибудь способы переноса запятой?
Отредактировано CAP33 (Авг. 24, 2018 11:46:45)
Офлайн
0
Непонятно, в каком контексте поставлена задача.
Если подойти формально, можно просто преобразовать в текст, и сделать на выходе текст.
Хотя у меня так получается
x = float(24187.0) y = float(x / 1000) print(y)
Отредактировано clipper1995 (Авг. 24, 2018 16:26:56)
Офлайн
857
>>> n = 24187.0 >>> n 24187.0 >>> out = round(n / 1000, 5) >>> n, out (24187.0, 24.187) >>>
Офлайн
13
В питоне из-за абстрагиования нас от этих низкоуровневых преблуд, типо базовых типов int, chat(массив байтов тут), float, double, long и т.п. питон сам решает где и что будет. Но в этом как раз он часто и ошибается. Но вот в новых версиях питона (3.6.x-3.7.x) эта проблема почти исправлена.
>>> 24187.0 / 1000 24.187 >>> print('izi pizi')
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн