C语言float类型只打印一位小数会自动四舍五入吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言float类型只打印一位小数会自动四舍五入吗相关的知识,希望对你有一定的参考价值。

原题是这样的
main()

inta;
charc=20;
float f=110.0;
double x;
a=f/=c*=(x=3.5);
printf("%d %d %3.1f %3.1f\n",a,c,f,x);

其中这个f=110/70=1.5714285714286,如果只保留一位小数的话,是打印1.5还是1.6?
我用VC6.0跑出来的结果是1.6,但是我认为float后面的会自动舍弃掉而不是四舍五入。
请问C语言float类型只打印一位小数会自动四舍五入吗?

printf()函数会根据格式要求,自动对float类型小数进行四舍五入的,比如代码,
//打印float类型,保留小数点后一位
#include <stdio.h>
int main(int argc, char *argv[])

float x=10.46;
printf("x=%.1f\n",x);//x=输出10.5
return 0;


printf()函数会根据格式要求(%.nf)自动对float类型小数进行四舍五入,输出到小数点后面的第n位,第n+1位进行“四舍五入”。
参考技术A 格式串在浮点数上总是四舍五入

刚用不同编译器试验过,验证也是四舍五入的本回答被提问者采纳

以上是关于C语言float类型只打印一位小数会自动四舍五入吗的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何保留一位小数点

C语言里,double类型的数据可以精确到小数点后几位?

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

C语言四舍五入保留两位小数

C语言编程 对变量保留两位小数 并进行四舍五入

在C#中怎么控制float的值保留小数的位数