猿问

​除法结果总是零

我有这个C代码。

#include <stdio.h>int main(void){
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;}

我想知道为什么我的变量t‘总是零(在printf函数中)?


UYOU
浏览 449回答 3
3回答

幕布斯6054654

因为在这个表达式中t&nbsp;=&nbsp;(1/100)&nbsp;*&nbsp;d;1和100是整数值,整数除法截断,所以这和下面的相同t&nbsp;=&nbsp;(0)&nbsp;*&nbsp;d;你需要像这样做一个浮动常量t&nbsp;=&nbsp;(1.0/100.0)&nbsp;*&nbsp;d;您也可能希望对此进行同样的处理。k&nbsp;=&nbsp;n&nbsp;/&nbsp;3.0;

慕森卡

您使用的是整数除法,整数除法中的1/100总是舍入为零。如果您想要进行浮点除法并简单地截断结果,则可以确保您使用的是浮动指针文本,并且d将被隐式转换:t&nbsp;=&nbsp;(int)((1.0&nbsp;/&nbsp;100.0)&nbsp;*&nbsp;d);

波斯汪

我想是因为t&nbsp;=&nbsp;(1/100)&nbsp;*&nbsp;d;1/100为整数除法=0那么0*d总是等于0如果你做了1.0/100.0,我认为它会正常工作
随时随地看视频慕课网APP
我要回答