关于#c语言#的问题,请各位专家解答!(相关搜索:程序输出|浮点数)

img


这个程序输出为什么全是0的浮点数啊,不应该是1吗
程序中1/i 但是i是1,为什么输出的值不是1

输出的第一个数是 1.000000,只有后面小于1的结果都变为了0.000000,因为1/i为整数结果,所以小数部分省略了;

1/i可以改为1.0f/i,将整数运算变为浮点类型运算,即可保留小数结果。

修改如下:

参考链接:



#include <stdio.h>

const double M_PER_K = 0.62137;

void pound(int n);

int main(void){
    
    int i=1;
    float n;
    printf("Watch out! Here are come a bunch of fractions.\n");
    while(i<30){
        // https://az764295.vo.msecnd.net/stable/6c3e3dba23e8fadc360aed75ce363ba185c49794/VSCode-darwin.zip
        // 将1/i 改为 1.0f/i  以保留小数结果 
        n = 1.0f/i;
        printf(" %f\n",n);
        i++; 
        
    }
    printf("That's all, folks!\n");
        
    return 0;
    
}

img

【以下回答由 GPT 生成】

这个问题是由于C语言中的整数除法得到的结果仍然是整数的特性导致的。在表达式1/i中,i是一个整数,所以计算结果会被截断成整数形式,而不是浮点数形式。

要解决这个问题,你可以将1转换为一个浮点数来进行除法运算。可以通过将常量1改为浮点数形式的1.0来实现。

以下是修改后的代码:

#include <stdio.h>

int main(void) {
    int i = 1;
    float n;

    printf("Watch out! Here come a bunch of fractions.\n");
    while (i < 30) {
        n = 1.0 / i;  // 将1改为1.0,以进行浮点数除法运算
        printf("%f\n", n);
        i++;
    }

    printf("That's all, folks!\n");

    return 0;
}

通过将1改为1.0,程序将执行浮点数除法,并得到正确的输出结果。

希望对你有所帮助!如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^