三刀流.索隆 发表于 2021-8-14 13:25:13

太怪了,不知道怎么起标题

有下面一串代码
#include <stdio.h>

int main()
{
      double a = 0;
      a = 10174 / 29220 * 100;

      printf("%.2lf", a);

      return 0;
}

我在微软VS2019试了好久,我试过把a初始化为0去掉,把.2去掉,在10174前面添上(double),还试过用括号把10174/29220括起来,试过把100移到10174前面来,我也调试过,
在"double a = 0;"这一句的时候a的值为-9.2559631349317831e+61
到了"a = 10174/29220*100"这里,a就变成了0,然后一直到程序结束,a的值都没再变过了

我甚至把文件关了再打开,重新编译,都完全没有变化,这个帖能过审就好了

超过光速c 发表于 2021-8-14 13:25:14

第一个问题,你初始化a,输出结果为乱码,这个应该跟你的编译器有关。我本地测试,也在线编译器也试过了,没出现你这种类似的乱码。
第二个问题,需要强制转换一下数据类型。#include <stdio.h>

int main(){
    double a = 0;
    printf("初始化a = %lf\n",a);
    a = (double)10174 / 29220 * 100;
    printf("计算后a = %.2lf\n",a);

    return 0;
}

输出结果为:
初始化a = 0.000000
计算后a = 34.82

人造人 发表于 2021-8-14 13:51:27

整数除以整数,得到的是整数

#include <stdio.h>

int main()
{
      double a = 0;
      a = (double)10174 / 29220 * 100;

      printf("%.2lf", a);

      return 0;
}

18306603734 发表于 2021-8-14 13:56:14

#include <stdio.h>

int main()
{
      double a = 0;
      a = 10174 / 29220 * 100;

      printf("%.2lf", a);

      return 0;
}

hhhfx 发表于 2021-8-14 14:38:48

耶?强制转换没成功?{:10_257:}按理说加(double)把运算转为浮点数计算就对了,不然赋值前都会成整除运算变成
10174/29220= 0→ 0*100 =0    。要改的话至少让程序认为这是个浮点数运算,实在不行数值改成10174.0这样{:10_297:}

三刀流.索隆 发表于 2021-8-14 14:43:45

好奇怪,之间明明试过转换的,不行啊,现在又可以了,可能是我之前粗心打错字了吧,但是从来没报过错啊{:10_263:}
页: [1]
查看完整版本: 太怪了,不知道怎么起标题