摘要 两个等价大数相减,差不是正确值0,而是一个大数:
同事儿子小明在上高中,刚学了两个公式:
便试着用 Python 编程计算 :
结果呢?从上看出,输出不是正确答案0,而是一个有着 71 位整数的数:6.125299882776625e70.
Python的输出让他感到很是奇怪,于是又用C语言计算:
这一下他彻底懵了:输出很相似,为 6.2115717121115074e70.
后又在 Excel 的单元格中计算:
20^65-exp(65*ln(20))
其输出更接近于C语言的输出: 6.2115717121115100e70.
3个结果均是含有 71位整数的数值,但是,又不完全相同。这让小明很是不解;同时想到这可能不是偶然的。这种输出与想法致使小明对计算机十分失望,失去了兴趣。
小明的想法是什么?错误计算不是偶然的。那么,您能给出另外一个错误吗?其实很容易:将 20 改成 30,或20.001,等等。您试试?或修改65为66,或77,等等。
最后,这究竟是怎么回事?且听下回分解。