一个关于取整的问题.实在是太让人难以理解了,都快气疯我了.高手低手都可以来看看.
double a,b;
a=(12.10000-12)*100;
b=(int)a;
我希望得到的是b=10.0而实际B=9.0,实在是太让人难以理解
那位朋友能说出点理由来,并说说解决这一问题的方法.
问题点数:50、回复次数:5Top
1 楼prog_st(st)回复于 2001-08-20 21:20:46 得分 25
#include "math.h"
改一改:
double a,b;
a=(12.10000-12)*100;
b=ceil(a);
Top
2 楼prog_st(st)回复于 2001-08-20 21:25:10 得分 0
另一法:
double a,b;
a=(12.10000-12)*100;
b=float(a);
可能是整型化是按floor处理的
Top
3 楼jiangsheng(蒋晟.Net[MVP])回复于 2001-08-20 21:28:28 得分 25
0.1实际上无法用2进制表示,内存中存放的值比01.略小,(int) 0.1*10就等于9了
解决的办法是使用乘上10再用整数进行运算。Top
4 楼tigerwood12345(tigerwood12345)回复于 2001-08-20 21:34:21 得分 0
完全同意Top
5 楼TangDynasty(俺们那嘎都是IT人,俺们那嘎盛产CAO)回复于 2001-08-20 21:45:48 得分 0
高手多如牛毛Top




