exo*_*ter 1 python floating-point precision floating-accuracy
假设我在间隔[0.0, 1.0]中有一个表示为字符串的浮点数.我们称之为这个价值floatstr.我们还假设该值表示区间中的整数[0, 255].
转换floatstr为整数的公式是(在python中):
int(round(float(floatstr)*255))
floatstr准确表示此值所需的最小小数点是多少?如果有这样的公式,这个最小数量是如何计算的?
两位数显然不会削减它.您只能代表100个不同的值.三位数怎么样?
假设我们有一个数字x/255,我们在小数点后显示3位数,有效地将其四舍五入到某个数字y/1000.乘y/1000用255和四舍五入会产生x,如果x/255是最接近的倍数1/255来y/1000.
如果x/255 = y/1000,那么它显然是最接近的倍数1/255.否则,x/255必须在距离内1/2000的y/1000舍入到y/1000,所以最接近的倍数1/255上的另一侧y/1000必须是至少一个距离1/255 - 1/2000远,进一步比x/255.因此,x/255是最接近多1/255至y/1000和3位数字是不够的.类似地,对于任何d带n数字的分母,n小数位应该足够(如果d是10的幂,n-1小数位应该这样做).
(我忽略了隐式浮点舍入误差在此推导中的影响.对于小分母,浮点舍入误差不应改变此分析.)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |