wwqq1234054 发表于 2019-1-5 19:34:02

关于浮点数问题

我自己写的代码:
#include <stdio.h>

#define FQ 3.7
#define JL 7
#define XQ 1.3
#define KXC 8
#define YC 2.4
#define YOUCAI 9
#define HG 6.3
#define BLB 0.5

int main()
{
      float xm;
      float xh;
      float xjy;

      xm = (2 * FQ +KXC + YOUCAI) * 0.5;
      xh = (3 * XQ + 0.5 * YC + 5 * HG) * 0.5;
      xjy = (10 * HG + 20 * BLB) * 0.5;

      printf("小明需要支付%3.2f元\n",xm);
      printf("小红需要支付%2.f元\n", xh);
      printf("小甲鱼需要支付%2.f元\n", xjy);

      return 0;
}
            


小甲鱼小的代码:
#include <stdio.h>

#define FANQIE3.7
#define JIELAN7
#define XIQIN   1.3
#define KONGXINCAI      8
#define YANGCONG      2.4
#define YOUCAI9
#define HUANGGUA      6.3
#define BAILUOBO      0.5

int main()
{
      float price;

      price = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5; // 1斤 == 0.5公斤
      printf("小明需要支付%.2f元\n", price);

      price = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;
      printf("小红需要支付%.2f元\n", price);

      price = (10 * HUANGGUA + 20 * BAILUOBO) * 0.5;
      printf("小甲鱼需要支付%.2f元\n", price);

      return 0;
}

为啥小甲鱼写的用%2.f 结果有小数我写的就必须要%3.2f 才有小数?用%2.f打印的结果只有整数
{:10_277:}

行客 发表于 2019-1-5 20:14:16

{:5_97:}因为小甲鱼写的不是%2.f,而是%.2f。

qq1242009750 发表于 2019-1-6 09:07:39

本帖最后由 qq1242009750 于 2019-1-6 09:08 编辑

%2.3f   前面的2表示输出多少位整数后面的3表示输出多少位小数
而这个占位符表示 输出两位整数,并输出三位小数{:5_102:}

wwqq1234054 发表于 2019-1-6 16:53:59

行客 发表于 2019-1-5 20:14
因为小甲鱼写的不是%2.f,而是%.2f。

啊没认真这样写是不是不管多少位的小数都能保留两位打印出来?

行客 发表于 2019-1-7 12:50:40

wwqq1234054 发表于 2019-1-6 16:53
啊没认真这样写是不是不管多少位的小数都能保留两位打印出来?

是的
页: [1]
查看完整版本: 关于浮点数问题