C语言乘法计算溢出
答案:5 悬赏:30 手机版
解决时间 2021-11-20 23:33
- 提问者网友:战魂
- 2021-11-20 20:15
C语言乘法计算溢出
最佳答案
- 五星知识达人网友:罪歌
- 2021-11-20 20:32
如果可以忍受少量的误差, 那么仅在a和b都很大的情况下先做除法.
if(a<60000&&b<60000){
c=a*b/100;
}else if(a>=b){
c=(a/100)*b;
}else{
c=(b/100)*a;
}其实是可以精确计算的,不过要用到模运算.像下面这样,
c=(a/100)*b+(a%100)*b/100;
if(a<60000&&b<60000){
c=a*b/100;
}else if(a>=b){
c=(a/100)*b;
}else{
c=(b/100)*a;
}其实是可以精确计算的,不过要用到模运算.像下面这样,
c=(a/100)*b+(a%100)*b/100;
全部回答
- 1楼网友:雪起风沙痕
- 2021-11-20 23:46
long a,b;
long long c;追问哥们,我这个用在微机上的,最大数就是long(32位)
long long c;追问哥们,我这个用在微机上的,最大数就是long(32位)
- 2楼网友:醉吻情书
- 2021-11-20 23:21
double行不行?
如果还是不行就的设置多个变量,分段进行四则运算,比较麻烦。追问求解,分段进行四则运算。哪有例子,我自己去看
如果还是不行就的设置多个变量,分段进行四则运算,比较麻烦。追问求解,分段进行四则运算。哪有例子,我自己去看
- 3楼网友:蓝房子
- 2021-11-20 23:11
(1)先做除法在做乘法,
(2)扩大定义范围如double
double a,b,c;
c=a*b/100.0;
a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295
所以先做除法在做乘法就行了a/100*b,你可以定义成double类型
double 和 float 的区别是double精度高,有效数字16位
double a,b,c;c=a*b/100.0;
(2)扩大定义范围如double
double a,b,c;
c=a*b/100.0;
a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295
所以先做除法在做乘法就行了a/100*b,你可以定义成double类型
double 和 float 的区别是double精度高,有效数字16位
double a,b,c;c=a*b/100.0;
- 4楼网友:煞尾
- 2021-11-20 22:08
把c=a*b/100;改成c=a/100*b;或c=a*(b/100);试试。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯