创业狂亏三千亿 发表于 2021-8-10 14:07:12

为什么程序换算和计算器的结果有点微小误差

我用C语言写了一个超级简单的换算程序,但是程序换算出来的结果和计算器的结果有微小的误差??是语言环境的问题,还是什么问题???有点懵逼了!!!代码如下!!!
#include <stdio.h>

int main()
{
        int n, b1, b2;
        float f, shao;
       
        printf("你要调制多少毫升的奶茶:");
        scanf("%d", &n);
        printf("输入调制比例(用空格隔开): ");
        scanf("%d %d", &b1, &b2);
       
        f = n/b2;
        printf("\n需加入奶茶粉:%.3f克!", f);
        shao = f / 5;
        printf("\n一勺为5克,需要加入:%.3f勺!", shao);
       
        return 0;
}

创业狂亏三千亿 发表于 2021-8-10 14:08:37

{:10_266:}一脸懵逼!!!!!!

wp231957 发表于 2021-8-10 14:27:46

创业狂亏三千亿 发表于 2021-8-10 14:08
一脸懵逼!!!!!!

涉及到浮点小数的cpu内部处理流程
浮点数没有十分绝对的东东   这也是 浮点数不能用==来判断是否一致
只能是 看你需求保留几位小数

Max472 发表于 2021-8-10 14:35:56

总量为 2500
料 : 水 = 1 : 7
料 = 总量 / 8 啊!

人造人 发表于 2021-8-10 14:38:08

f = n/b2;
f = (float)n/b2;

塔利班 发表于 2021-8-10 16:24:25

2个int相除2500/7结果取整,所以是357,然后转成float,

创业狂亏三千亿 发表于 2021-8-11 10:33:24

人造人 发表于 2021-8-10 14:38
f = n/b2;
f = (float)n/b2;

我加上(float)就好了,谢谢,{:5_109:}

创业狂亏三千亿 发表于 2021-8-11 10:35:05

wp231957 发表于 2021-8-10 14:27
涉及到浮点小数的cpu内部处理流程
浮点数没有十分绝对的东东   这也是 浮点数不能用==来判断是否一致
...

谢谢回复,已经解决了,{:5_109:}
页: [1]
查看完整版本: 为什么程序换算和计算器的结果有点微小误差