今天早上我遇到了一件事让我想
如果在Python中存储一个变量,我假设大多数语言都是x=0.1,然后将该值显示为30位小数,结果是:“0.10000000000000055115123126”
我在网上读到一篇文章,解释说数字是以二进制形式存储在计算机上的,这种差异是由于基数转换造成的
我的问题是物理学家和纳米科学家在进行计算时是如何绕过这个问题的
我一直认为,如果我用科学记数法把数据输入计算器,它会给我一个可靠准确的结果,但现在我想知道是否真的是这样
必须有一个简单的解决方案吗
谢谢
Tags:
和往常一样,这取决于上下文(对不起下面的“通常”和“通常”两个词)。也取决于“科学”的定义。下面是“物理”建模的例子,而不是“纯粹的数学”建模
通常,使用计算机进行科学/工程计算:
现在,在“模型链”中:
您在“模型链”中有很多权衡(在准确性、计算成本、输入数据的数量和质量之间,…)。 从“实用”的角度来看,浮点算法不是完全可以忽略的,但通常是“模型链”中最小的问题之一
python中的decimal类可以帮助您处理这个问题
但就个人而言,当我处理货币交易时,我不想有额外的钱,比如9900012欧元。我把金额换算成美分。所以我只需要操作和存储整数
作为物理学家,我认为这些小数在大多数情况下是多余的。。小数点后第16位是什么并不重要。测量的精度没有达到这个水平(甚至在QED中也没有)Take a look at here,最高精度的测量值约为
10^13 - 10^14
将此应用于您的示例:
小数点后14位
0.100000000000000005551115123126
变成0.100000000000000
,这根本不会引入任何错误相关问题 更多 >
编程相关推荐