关于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
printf里也要lf啊 浮点型有时会自动四舍五入,有时不会,你可以写一个这样的语句
d=(int)(c*100+0.5)/100.0;
这样浮点型c会四舍五入成浮点型d ceil() {:10_257:}{:10_257:}学习{:10_279:}{:10_279:} {:10_279:} {:10_254:} {:10_279:} {:10_254:} {:10_279:} {:5_95:} {:10_256:}
学习来了
.2f系统只会看你小数点后两位 无视了第三位 你需要.3f
页:
[1]