给定一个双精度数,计算数字的精确度和准确度的最有效方法是什么?理想情况下,我希望避免for循环。
发布于 2015-03-05 06:23:57
在python中,浮点数以二进制形式存储。精确度和精确度在二进制中有完全不同的含义,特别是在计算机被限制为固定长度表示的情况下。您可以通过注意代码1e16+1 == 1e16返回True来向您自己演示这一点。
您链接到了Wolfram.com,其中以十进制数的形式讨论了精度和准确性。在以二进制形式存储在计算机中的数字中,谈论小数点的位置没有任何意义。要使用十进制数字的实际小数精度来表示和操作十进制数,需要使用python的Decimal类。
请注意,您必须为Decimal类提供一个字符串,才能使其在小数方面准确。如果你给它一个文字数字(例如Decimal(1.001)),你只是给它一个浮点数,而你创建的Decimal将是python不精确的浮点表示1.001的精确的十进制表示。
遗憾的是,Decimal类没有返回小数点两边的位数的方法。但是,假设您的小数是十进制形式,您可以将其作为字符串进行检查,使用str(x),其中x是Decimal的一个实例。
https://stackoverflow.com/questions/28865200
复制相似问题