请问乘积超过2的32次方怎么处理?

2019-07-14 13:58发布

我的程序是这样的:accel_lim = ((long)step*decel) / (accel+decel);由于step和decel比较大,所以他们的乘积可能超过2的32次方-1,但是除以(accel+decel)后肯定是小于2的32次方的,为什么我算出来的结果是错误的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
djw200988
1楼-- · 2019-07-14 17:58
数据溢出了
你我然后
2楼-- · 2019-07-14 22:50
用int64吧。。。
zzw0719
3楼-- · 2019-07-14 23:18
帮顶吧                 
Xavier_1995
4楼-- · 2019-07-15 02:56
 精彩回答 2  元偷偷看……
fantasyo老时光
5楼-- · 2019-07-15 03:10
ndrwer 发表于 2019-2-27 13:55
你交换一下计算顺序,accel_lim = ((long)step) / (accel+decel)*decel。
如果结果会出现超过32bit的数,那就只有老实按照两个32bit字节存储计算。

这样会丢精度。
fantasyo老时光
6楼-- · 2019-07-15 03:24
Xavier_1995 发表于 2019-2-27 14:59
先除后乘,二楼正解

会丢精度的。

一周热门 更多>