【发布时间】:2013-04-25 18:12:22
【问题描述】:
谁能解释为什么当我将 b 除以一个整数时,它会被四舍五入,尽管它是一个浮点数?
#include <stdio.h>
void main() {
int a;
float b, c, d;
a = 750;
b = a / 350;
c = 750;
d = c / 350;
printf("%.2f %.2f", b, d);
// output: 2.00 2.14
}
【问题讨论】:
-
“为什么?” - 因为语言是这样设计的。如果您想要
float,请先转换为float。 -
仅仅因为赋值的左侧是浮点数并不意味着右侧必须是 - 它仅意味着右侧必须提供 equal或低于浮点数的精度,因此编译器没有理由将其设为除 int 以外的任何值。
-
因为
a和350是ints。 -
因为这是 Kernighan 和 Ritchie 定义它的方式。
-
@ValekHalfHeart “精度相同或更低”与此无关。无论您对“精度”的定义是什么,
int i = 2.0;和double d = 1;都是有效的。
标签: c