关于精度的问题?
https://fishc.com.cn/forum.php?mod=image&aid=135234&size=300x300&key=467db33b2c9c253e&nocache=yes&type=fixnone不明白最后代码为什么/10和/10.0的输出结果有的有问题,有的没问题?
除以10.0就可以了 你定义的变量均为整型,整型除法是取整数,如 /10
/10.0 是强制转换为浮点数进行除法,还有两种方法就是:
1.0 * totalScore / 10
(float)totalScore / 10
这两种写法的目的是强制转换为浮点数进行运算 风过无痕1989 发表于 2020-10-24 08:48
你定义的变量均为整型,整型除法是取整数,如 /10
/10.0 是强制转换为浮点数进行除法,还有两种方法就是 ...
不是啊,问题我的问题是说为什么/10不会得到正确的结果,但是的话/10.0却可以 烂冬瓜狮子头 发表于 2020-10-25 04:20
不是啊,问题我的问题是说为什么/10不会得到正确的结果,但是的话/10.0却可以
整数除10的结果是整数,比如:int 6 / 10 = 0 (在C语言的概念中就是如此,而在我们平时的概念是等于0.6的)
浮点数除10是整数带小数,比如:float6 / 10 = 0.6
双精度除10是整数带小数,比如:double6 / 10 = 0.6
看下面的例子:
#include <stdio.h>
int main(void)
{
int a = 6,b = 10, x;
float c = 6.0,d =10.0, y;
double e = 6.0,f =10.0, z;
x = a / b;
y = c / d;
z = e / f;
printf("整数除法:a / b = %d\n",x);
printf("浮点数除法:c / d = %f\n",y);
printf("双精度除法:e / f = %lf\n",z);
return 0;
}
输出:
整数除法:a / b = 0
浮点数除法:c / d = 0.600000
双精度除法:e / f= 0.600000
-------------------------------------------------------
Process exited after 0.3456 seconds with return value 0
请按任意键继续...
页:
[1]