浮点运算问题

[复制链接]
 楼主| xsgy123 发表于 2012-4-10 18:07 | 显示全部楼层 |阅读模式
最近我研究自动寻路系统中发现了有一个奇怪的问题。
就是说两个双精度小数点的乘法结果不是每次一样。 有两种结果。
一个是正确的(结果值的精度就是双精度)一个是不正确的(结果是单精度)
我来贴个代码
double dmutiple(double p1x, double p1y)
{
double ret = p1x * p1y;
return ret;
}

下面调用这个函数如此
double p = dmultiple(-1315.192627, 3798.213623);

这下当然是p1x和p1y都是双精度、乘法的结果也应该是双精度 这样才对了。
但是这次的测试的结果是让我很失望。。。
有的时候 -4995382.552624 这是正确的。
可是有时 -4995382.500000 这是不对的,这个是p1x和p1y都是单精度的时候的精度。
哪位朋友看过了这样的问题吗?

可注意的是在简单的例子Project上没有这个问题 每次都正确的。
但是比较大的工程里一定出现这问题。 所以我想这个问题是不是堆栈不够的时候出现的问题的。。。 但还不确定。
请多位高手的指教。
秋天落叶 发表于 2012-4-10 18:23 | 显示全部楼层
应该不可能是这里的问题,估计是调用的时候返回值给了float
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部