对于1/3 * 3,R产生1的精确小数答案。对于具有不可避免的舍入误差的浮点运算,情况不应该如此:
1 / 3~0。(01)
3~11
1/3 * 3~0。(1)
查看R的输出超出双点精度的限制,R计算1/3 * 3完全(基数为10)1。使用浮点运算时,这个结果怎么可能?
> sprintf("%.60f",1/3)
[1] "0.333333333333333314829616256247390992939472198486328125000000"
> sprintf("%.60f",3)
[1] "3.000000000000000000000000000000000000000000000000000000000000"
> sprintf("%.60f",1/3*3)
[1] "1.000000000000000000000000000000000000000000000000000000000000"