#7770: 誤差好奇怪@@


Horay (Horay)


第三個測資的line 1

我輸出8.98% ... 

他說答案是8.99%...

我檢查了四捨五入,但不還是知道錯在哪?? 

#7771: Re:誤差好奇怪@@


kkmomo (kkmomo)


第三個測資的line 1

我輸出8.98% ... 

他說答案是8.99%...

我檢查了四捨五入,但不還是知道錯在哪?? 

20000 21797

無誤差8.985,四捨五入為8.99沒錯

 

我用vs2012 在win7 64bit下測 

double x=8.985;

printf("%.2f\n",x);
8.98

printf("%.2f\n",((int)(100*x+0.5))/100.);
8.99

printf("%.2lf\n",x);

8.98
printf("%.2lf\n",((int)(100*x+0.5))/100.); 

8.99


1、編譯器實作上的造成的差異

2、計算過程

 

可以看看這篇

http://bbs.csdn.net/topics/300085469

#7772: Re:誤差好奇怪@@


kkmomo (kkmomo)


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98

#7773: Re:誤差好奇怪@@


kkmomo (kkmomo)


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99

#7893: Re:誤差好奇怪@@


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99

那程式要怎麼改才能過

#7894: Re:誤差好奇怪@@


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99

那程式要怎麼改才能過

#7895: Re:誤差好奇怪@@


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99



#7896: Re:誤差好奇怪@@


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99



#7897: Re:誤差好奇怪@@


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99



#9831: Re:誤差好奇怪@@


abc337479871 (密碼:我DE芳齡!!學弟學妹們加油了! ↖(^ω^)↗ ...)


在gcc 4.1.2 Red Hat 4.1.2-33下

上面4個printf都是8.98



gcc 4.7.2 (Debian 4.7.2-5)

也是

8.98

8.99

8.98

8.99

那程式要怎麼改才能過

浮點數都是這樣變來變去的 你改成用低精度除法 再用一個陣列把商記住