mzzshiyi 发表于 2020-7-23 10:40:31

1.2 * 1.5 却不等于 1.8,我错在哪里呢??

#include <stdio.h>
#include <stdlib.h>

int main()
{
        float a,b,c;
        a = 1.2;
        b = 1.5;
        c = a * b;
        printf("%d", c);
       
        return 0;
}

可以编译,但结果是负数,为什么呢?

Twilight6 发表于 2020-7-23 10:42:16

本帖最后由 Twilight6 于 2020-7-23 10:44 编辑



因为 %d 是格式化整型占位符,而你开始时候是声明浮点型的值

因为 C 语言中 各种变量的储存方式不同,所以得出的值不同

这里 %.2f 是保留2位有效小数哈


#include <stdio.h>
#include <stdlib.h>

int main()
{
      float a,b,c;
      a = 1.2;
      b = 1.5;
      c = a * b;
      printf("%.2f", c);
      
      return 0;
}

Hello. 发表于 2020-7-23 10:43:52

定义单精度,用整形?
float a,b,c;
printf("%d", c);

printf("%f", c);

FishC--Student 发表于 2020-7-23 11:27:35

本帖最后由 FishC--Student 于 2020-7-23 11:28 编辑

你用整型占位符给浮点型占位,输出会像下面一样是一串乱码:
https://s1.ax1x.com/2020/07/23/Uq4EnA.png
将代码改成下面这样就可以了:
https://s1.ax1x.com/2020/07/23/Uqo4vF.png
要输出1.8,要将代码改成下面这样:
https://s1.ax1x.com/2020/07/23/UqokX4.png
其中“printf("%.1f", c);”是保留1位小数。

mzzshiyi 发表于 2020-7-23 15:14:54

谢谢老铁!!是%d   %f的分别
页: [1]
查看完整版本: 1.2 * 1.5 却不等于 1.8,我错在哪里呢??