我对计算中的无限数字,尤其是圆周率感到好奇。
要让计算机绘制一个圆,它必须理解圆周率。但如果它是无限的,它怎么能理解呢?
我是不是想太多了?它会使用一个四舍五入的值吗?
我对计算中的无限数字,尤其是圆周率感到好奇。
要让计算机绘制一个圆,它必须理解圆周率。但如果它是无限的,它怎么能理解呢?
我是不是想太多了?它会使用一个四舍五入的值吗?
在数学上,计算机既是有限的又是不连续的,因此无法完全知道圆周率 PI,也无法正确地渲染圆形。
然而,在数字世界中,这些都不存在,因此近似计算圆周率并使用它来近似渲染圆形是足够的,从而得到与精确的 PI 相同的像素集合。
但无论哪种方法,由此得到的像素点都不是真正的圆形,因为它们是有限数量的数字点组成的,而圆形是由无数个点组成的曲线,大多数点的值都是无理数。
(有人曾指出,通常不使用 PI 来绘制圆形,这是正确的。然而,用于绘制圆形的方法与用于表达和/或计算 PI 值的公式相关,仍存在相同的问题)。
一般来说,只需要一个近似值即可。为了“渲染”圆形,计算机只需要足够理解π的精确度以便在所需的分辨率(有限)下准确绘制。
编辑:正如其他人指出的那样,甚至不需要 π 来渲染圆。不过,问题的要点是“计算机如何处理像 π 这样的数字?”它们使用近似值,并且使用这些近似值的人必须决定它们是否足够精确以满足给定的目的。
计算机只是使用了 pi 的一个很好的近似值。
来自 MSDN 上关于 System.Math.PI 的文章:
该字段的值为 3.14159265358979323846。
顺便说一下:PI 不是无限的。它是无理数,意味着它有无限个不重复的小数位。有几个非常简短的 PI 表达式。(有关更多详细信息,请参见维基百科页面)
这里有一个非常简短的 PI 表达式:
编程语言中使用一个圆形常数来表示π和类似的“无限”数字。
为了获得更高的精度,您需要使用循环迭代算法,其循环次数根据需要而定。
我曾在某处看到一个证明,如果要以毫米精度画出一条环绕宇宙的圆,你只需要不到100位的π,换句话说,远远少于那些用太多时间(或太多计算能力)计算的数字。现在,如果我能找到那个证明就好了... (编辑) 找到了
计算机通常使用圆整后的π值,除非是特殊情况,比如科学计算。例如,在Python中,π的表示方式为:
>>> import math
>>> math.pi
3.1415926535897931
你可以在IDLE中测试这个,它是Python的交互式解释器。
我相信它会四舍五入到非常小的数字,很可能是一个常数。 如果您使用PHP,这就是PI的呈现方式:
echo pi(); // 3.1415926535898 echo M_PI; // 3.1415926535898
就像你在高中只需要知道3.14159一样,计算机只需要足够的精度来获得相当准确的结果。
π不是无限的,它是无理数,这意味着你不能将其表示为商。它有无限多的数字。 http://en.wikipedia.org/wiki/Proof_that_π_is_irrational
关于计算,可以在这里找到一些信息。 http://en.wikipedia.org/wiki/Computing_π
这也是一个不错的页面。 http://3.141592653589793238462643383279502884197169399375105820974944592.com/
x^2 + y^2 = R^2
,可以看到没有提到π。关于如何实现这种算法的更多细节,请参阅http://en.wikipedia.org/wiki/Midpoint_circle_algorithm。 - Pavel Minaev