【发布时间】:2018-11-26 09:35:15
【问题描述】:
当我这样做时:
float add=0;
int count[] = {3, 2, 1, 3, 1, 2, 3, 3, 1, 2, 1}
for (int i=0; i<11; i++)
add += 1 / ((float)count+1);
输出是:
4.00000000000000000000
但是当我这样做时:
float add=0;
int count[] = {3, 2, 1, 3, 1, 2, 3, 3, 1, 2, 1}
for (int i=0; i<11; i++)
add += 1.0 / ((float)count+1);
输出是:
3.99999976158142089844
当我需要将 int 转换为 float 时,我要么在前面添加 (float),要么让它使用诸如 a / 1.0 之类的小数进行算术运算。有什么区别吗?
编辑: 添加所需的行为。
原因是之后,我需要一个将add 添加到另一个 int 变量的结果,用于 int 输出。但是,当我使用第二种方式时,int 使用 3 而不是 4,所以我想知道第一个和第二个代码有什么区别。
【问题讨论】:
-
在发布任何问题之前,请确保您的代码没有错误。
-
1) 你不能在 C 中声明
int count=[3 2 1 3 1 2 3 3 1 2 1]2) 浮点运算不是你想的那样 -
这在我看来不像 C。
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
-
即使你把它设为合法的C,最大的区别在于
1.0is a double,因此整个表达式将以双精度完成,而1 / ((float)count+1)以浮点精度完成
标签: c floating-point int