Я пытаюсь поместить все десятичные разряды 1/n
в список в Python.Десятичные разряды в Python
def dec(n):
result = float(1)/n
while (result >= 1):
result = result - 1
while (result != 0):
result = result * 10
decimals = int(result)
yield(decimals)
result = result - decimals
Однако, когда я попытался list(dec(3))
, он не дает мне список полный 3s, но вместо того, чтобы что-то вроде [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 7, 2]
Как мне это исправить?
Знаете ли вы, что список Python не может продолжаться вечно? – user2357112
Также обратите внимание, что точность с плавающей запятой - вещь. Поплавки в компьютере подобны пациентам - у вас слишком много операций над ними, и они умирают. (Ну, не совсем, но читайте http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html). Если вы хотите сделать бесконечное деление точности, просто выполните алгоритм деления длинной руки самостоятельно, используя только целые числа. – Amadan
@ user2357112 да, но даже так, я хотел бы, чтобы я мог получить все 3s, а не другие числа. Я думаю, мне нужен какой-то трюк, так как мой код не ошибается, но он не дает ожидаемого результата. – viethaihp291