C语言乘法计算溢出long a,b,c;c=a*b/100;a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295.我前面的程序对a、b有限制有没什么方法计算能不溢出呢?(如果先对a、b先除100,这样的话,精度有影响.a是

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 15:26:36
C语言乘法计算溢出longa,b,c;c=a*b/100;a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295.我前面的程序对a、b有限制有没什么方法计算能不溢出呢?

C语言乘法计算溢出long a,b,c;c=a*b/100;a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295.我前面的程序对a、b有限制有没什么方法计算能不溢出呢?(如果先对a、b先除100,这样的话,精度有影响.a是
C语言乘法计算溢出
long a,b,c;
c=a*b/100;
a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295.我前面的程序对a、b有限制
有没什么方法计算能不溢出呢?
(如果先对a、b先除100,这样的话,精度有影响.a是变量,如果先除100的话,当a小于100时就出错了)
如果先转化为float计算的话,float精度只有7位,也不够.所以郁闷

C语言乘法计算溢出long a,b,c;c=a*b/100;a*b是超过4294967295的,但是a*b/100是绝对不超过4294967295.我前面的程序对a、b有限制有没什么方法计算能不溢出呢?(如果先对a、b先除100,这样的话,精度有影响.a是
把c=a*b/100;改成c=a/100*b;或c=a*(b/100);试试.