你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

乘积超过2的32次方该如何处理?

[复制链接]
yanhaijian 提问时间:2015-8-25 16:39 /
我的程序是这样的:accel_lim = ((long)step*decel) / (accel+decel);由于step和decel比较大,所以他们的乘积可能超过2的32次方-1,但是除以(accel+decel)后肯定是小于2的32次方的,为什么我算出来的结果是错误的。
<
收藏 评论11 发布时间:2015-8-25 16:39

举报

11个回答
mlxy123xy 回答时间:2015-8-25 23:10:28
你交换一下计算顺序,accel_lim = ((long)step) / (accel+decel)*decel。
如果结果会出现超过32bit的数,那就只有老实按照两个32bit字节存储计算。
风子 回答时间:2015-8-26 00:47:12
数据溢出了
党国特派员 回答时间:2015-8-26 08:14:33
用int64吧。。。
你好我好大家好! 回答时间:2015-8-26 08:57:46
帮顶吧                 
JackieLaura 回答时间:2015-8-26 09:13:15
先除后乘,二楼正解
stmcu.org.png
yanhaijian 回答时间:2015-8-26 10:22:30
mlxy123xy 发表于 2015-8-25 23:10
你交换一下计算顺序,accel_lim = ((long)step) / (accel+decel)*decel。
如果结果会出现超过32bit的数,那 ...

这样会丢精度。
yanhaijian 回答时间:2015-8-26 10:23:03
JackieLaura 发表于 2015-8-26 09:13
先除后乘,二楼正解

会丢精度的。
yanhaijian 回答时间:2015-8-26 10:24:15
本帖最后由 yanhaijian 于 2015-8-26 10:28 编辑

KEIL识别不了这个关键字。应该是__int64。
moyanming2013 回答时间:2015-8-26 10:29:18
long long类型的支持。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版