当我尝试打印 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)
在这个表达式中:
((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)