关于精度的问题.?
double a=2.3;
int c = a*100;
c,算下来是229,而不是230,不知道应该怎么计算
[解决办法]
double 本来就是不精确的数!!!这个没办法的```
[解决办法]
http://community.csdn.net/Expert/topic/5730/5730985.xml?temp=.6518366
去这里看看,就知道为什么了!!
[解决办法]
double a=2.3;
double c = a*100.0;
[解决办法]
手工模拟 ,小数点
[解决办法]
呵呵,ToperRay(绿皮狼)做法就可以解决了
你需要保证相乘的两个数都是double型的
[解决办法]
将100改为100.0怎么样呢
double本来就是很精确的,在你的列子中它只能无限接近230,但永远也达不到,也就是说最后
结果可能是229.999999....,因为强制取整了,所以就是229
[解决办法]
你把C也定义成DUOUBLE类型试下算出结果再转换成INT
[解决办法]
可自己写一个方法来完成这样的转换,有的软件是用0.5为界进行最接近数字转换的
[解决办法]
double a=2.3;
int c = a*100.0;
浮点数精度问题,
属于标准定义问题,
无法手工控制。
为达到最高的精度,
唯一的办法就是减少中间过程算精度损失,
即除最终结果,中间运算过程全部使用最高精度的数值表示方式。
[解决办法]
这样写:
double a = 2.3;
double f = a*100.0;
int c =( int )( f + 0.5 );