我想做什么:
悖论:假设彼得帕克跑来赶公共汽车。要达到它,他首先需要到达那里。在此之前,他需要在四分之一,八分之一之前得到四分之一的路程;在第八,第十六之前;等等。由于距离可以无限减半,他会试图完成无数的任务......这将是一个逻辑上不可能的事情!我试图用Python解决这个悖论
我有一些问题: 如何获得一个对小数没有限制的数字? Python限制了小数的数量,我认为12,如何使这个数字无限?
一般来说,没有办法让浮点小数无限,我能得到的最接近的是
from decimal import Decimal
这是要求用户输入数字的正确方法吗? 代码已修改
from decimal import Decimal
def infinite_loop():
x = 0;
number = Decimal(raw_input())
while x != number:
x = x + number
number = number/2
print x
infinite_loop()
答案 0 :(得分:2)
你问的是不可能的。没有"无限精度"有限计算系统的现实世界中的浮点值。如果有,单个浮点值可以消耗所有系统的资源。 pi * d
?哎呀! pi
是无限的。有系统!
但是,您可以执行任意精度十进制值。它们仍然是有限的,但你可以选择你想要多少精度(并且愿意支付)。 E.g:
>>> from decimal import Decimal
>>> x = Decimal('1.' + '0' * 200)
>>> x
Decimal('1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')
现在你有200位数的精度。不够?去400. 800.但是你喜不喜欢。只要这是一个有限的,实用的价值。
答案 1 :(得分:1)