Edwiner 发表于 2021-11-18 14:46:31

关于C语言四舍五入错误的问题

本帖最后由 Edwiner 于 2021-11-18 14:48 编辑

问题:
很迷,下面这个程序,如果我把double换成float那就正常四舍五入,如果不换,100一下的四舍五入都不正常,比如输入80.145,四舍五入应该是80.15,但是输出是80.14。求各位大佬看一下是什么原因。

代码:
# include <stdio.h>

int main ()
{
    double b,c,d;
    scanf("%lf,%lf,%lf",&b,&c,&d);
    printf("%.2f %.2f %.2f\n",b,c,d);

    return 0;
}

第一次运行:
输入:80.145,90.145,100.145
输出:80.14 90.14 100.15

第二次运行:
输入:90.945,100.145,101.145
输出:90.94 100.15 101.15

第三次运行:
输入:10.345,20.345,30.345
输出:10.35 20.34 30.34

wp231957 发表于 2021-11-18 15:59:22

printf里也要lf啊

村里小黑 发表于 2021-11-18 16:00:37

浮点型有时会自动四舍五入,有时不会,你可以写一个这样的语句
d=(int)(c*100+0.5)/100.0;
这样浮点型c会四舍五入成浮点型d

傻眼貓咪 发表于 2021-11-18 19:40:34

ceil()

zhsguitar 发表于 2021-11-18 20:44:48

{:10_257:}{:10_257:}学习{:10_279:}{:10_279:}

阿萨德按时 发表于 2021-11-19 08:41:37

{:10_279:}

tianlai7266 发表于 2021-11-19 09:57:10

{:10_254:}

100gram 发表于 2021-11-19 15:21:26

{:10_279:}

醉听风 发表于 2021-11-19 15:54:36

{:10_254:}

1molHF 发表于 2021-11-19 18:27:18

{:10_279:}

hornwong 发表于 2021-11-19 20:05:04

{:5_95:}

新生路飞 发表于 2021-11-20 10:56:26

{:10_256:}

tomok 发表于 2021-11-20 16:55:40

学习来了

民航阴才 发表于 2021-12-5 23:58:59

.2f系统只会看你小数点后两位 无视了第三位 你需要.3f
页: [1]
查看完整版本: 关于C语言四舍五入错误的问题