打印

浮点运算问题

[复制链接]
866|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝