整数相除或相乘每次的结果都是 0.0000

ida*_*fov 1 c integer

当我尝试打印 preTopping 时,即使预先添加(浮动),答案也始终是 0.0000

int length, width;
printf("Please enter your pizza's length (cm): ");
scanf(" %d", &length);
printf("Please enter your pizzas width (cm): ");
scanf(" %d", &width);

float preTopping, postTopping=0;
preTopping = ((length * width) / (40 * 40)) * 60;
printf("%f", preTopping);
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 7

在这个表达式中:

((length * width) / (40 * 40)) * 60;
Run Code Online (Sandbox Code Playgroud)

所有操作数都有类型int。这意味着完成了整数除法,并且整数除法会截断任何小数部分。因此,如果length * width小于 1600,除法的结果将为 0,因为这是结果的整数部分。

如果要使用浮点除法,则需要将除法的至少一个操作数转换为浮点类型:

preTopping = ((float)(length * width) / (40 * 40)) * 60;
Run Code Online (Sandbox Code Playgroud)