hun*_*rge 0 c floating-point double
我有一个非常简单的C程序.
int main(void){
double sum = 1/2;
printf("%d\n", sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么它会返回"-2030243223"之类的数字?
为什么每次运行程序时这个数字都会改变?
我尝试过使用int和float,但我似乎无法将输出变为0.5!?
Fre*_*Foo 11
使用%f打印double,不%d.后者导致未定义的行为.
表达式也1/2使用整数除法0,因此得到.5,使用1/2.(注意尾随句号).
最后,要实际获取.5而不是类似的东西0.500000,请指定精度:
printf("%.1f\n", sum);
Run Code Online (Sandbox Code Playgroud)
你传递一个IEEE浮点数来printf,但告诉它这是一个整数.
更改
printf("%d\n", sum);
Run Code Online (Sandbox Code Playgroud)
至
printf("%f\n", sum);
Run Code Online (Sandbox Code Playgroud)
如其他评论中所述,您可能还希望进行浮点除法而不是整数除法.1/2是零; 你正在划分两个整数,所以结果是一个整数(是的,即使你将它分配给一个浮点变量 - 每个表达式的类型都是孤立地确定的)它必须丢弃其余的.你可能想要1.0/2; 如果任一项是浮点数,那么结果是浮点数,所以你得到0.5.