silver_gp 发表于 2017-5-15 17:10 
浮点精度问题。这个是基础的编程问题,浮点数之间比较不允许用== 用sprintf打印a和b,就会发现不同了:
> ...
谢谢,明白了a与b的不同。
但是照你所说,那是什么原因导致了精度不同呢?类似于你的方法,在查看T*(1 - 0.3) 与T*(1 - 0.7)的精度时,结果如下:
> sprintf("%.30f", T*(1- 0.3))
[1] "70.000000000000000000000000000000"
> sprintf("%.30f", T*(1- 0.7))
[1] "30.000000000000003552713678800501"
而:
> sprintf("%.30f", 0.3)
[1] "0.299999999999999988897769753748"
> sprintf("%.30f", 0.7)
[1] "0.699999999999999955591079014994"
那这是什么原因呢?