搜索
查看: 1191|回复: 7
打印 上一主题 下一主题

加减乘除

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-16 09:13:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
123456789+432143217078*8721321*(123456+54321)这个答案等于多少?
编程这样输入
int a,b,c,d,e,f;a=123456789,b=432143217078,c=8721321,d=123456,e=54321;
f=a+b*c*(d+e);
是对的吗?计算机会按照数学的顺序运算吗??

沙发
发表于 2013-10-16 13:17:46 | 只看该作者
不对,因为会溢出
板凳
发表于 2013-10-16 14:21:34 | 只看该作者
那要怎么解决啊~
地板
 楼主| 发表于 2013-10-16 17:42:02 | 只看该作者
溢出是什么意思  那要怎么算啊???新人不懂啊 求指导!!!
5#
发表于 2013-10-16 18:04:30 | 只看该作者
现代计算机一般的int是32bit
能容纳的最大值只有2147483647,超出这个值就放不下,就会溢出
你随手写的那个式子远远大于2147483647

如何解决要看你真正感兴趣的问题是什么
如果是计算本身那么应该去用专门的数值计算软件,或者换一种支持无限精度的编程语言也行,Lisp Haskell python都默认支持无限精度整数,Java标准库也有BigInteger class可以用
如果要用C来做,优先考虑一个叫GMP的库,这个库可以实现无限精度运算

如果你想用C自己手动实现一个无限精度的运算,我劝你还是多学段时间的C再考虑这件事情吧,这并不是件简单的事情
6#
 楼主| 发表于 2013-10-17 13:19:31 | 只看该作者
rosynirvana 发表于 2013-10-16 18:04
现代计算机一般的int是32bit
能容纳的最大值只有2147483647,超出这个值就放不下,就会溢出
你随手写的那 ...

如果没有超过这个值这样子是算是 对的吗??
7#
发表于 2013-10-17 13:55:13 | 只看该作者
正确的           
8#
发表于 2013-10-22 18:56:48 | 只看该作者
lxzhtxh13 发表于 2013-10-16 14:21
那要怎么解决啊~

用长整型啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表