〃忝書γě渎ぐ 发表于 2020-4-22 08:11:10

C语言浮点数存储是怎么规定的?

#include <stdio.h>

int main()
{
    float a;
    float b,c;

    a = 100/3.0;
    //a = 1000000/3.0;我发现整数部分增加,小数部分就减少,C语言浮点数这方面是怎么规定的?

    printf("%20.18f",a);

    return 0;
}

liuzhengyuan 发表于 2020-4-22 08:11:11

整数部分增加,小数部分就减少是因为 %20.18f 的关系吧

〃忝書γě渎ぐ 发表于 2020-4-22 08:34:10

liuzhengyuan 发表于 2020-4-22 08:13
整数部分增加,小数部分就减少是因为 %20.18f 的关系吧

能不能说的详细一点呢。

sunrise085 发表于 2020-4-22 08:34:40

本帖最后由 sunrise085 于 2020-4-22 09:02 编辑

看看我的 这篇帖子吧
C语言中浮点数存储与%f输出细节探究

我没太明白你所说的小数部分减少是什么意思。小数部分值减小了?小数部分精确的位数减少了?float的有效位数是8位,double的有效位数是15位,超过这些为之后的都是不精确的

liuzhengyuan 发表于 2020-4-22 08:36:09

本帖最后由 liuzhengyuan 于 2020-4-22 08:37 编辑

〃忝書γě渎ぐ 发表于 2020-4-22 08:34
能不能说的详细一点呢。

有可能是因为 1000000000/3 超出了 float 的范围 (用 double 试试看)
页: [1]
查看完整版本: C语言浮点数存储是怎么规定的?