c语言%f输出float型数据的四舍五入问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言%f输出float型数据的四舍五入问题相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
int main()
float x =24.5766;
printf("x=%f\n",x);
return (0);
执行上述程序时输出为什么是24,576599?
改成float x = 24.5764;后,输出又为什么变成24.576401?
不论对应的数是什么类型,都输出6位小数
因为你的x是4位小数,少于6位
所以会在后面加两位小数补齐,至于那两位数是什么,要看后面的内存单元中存的是什么
(C语言会出现意外的内存访问,这点很不好)
也就是说 这不是什么四舍五入,而是将后面的内存单元变成了两位数而已
以你题目中的情况,还是用%.4f限定4位小数比较好 参考技术A 就是0.000001左右的误差问题,根本在于实数(float double)的内存表示问题。你可以看下实数在内存中的存储方法。实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。后面多出来的数据,就要看内存单元实际存储的内容了。 参考技术B printf("%2.4f", x);小数点前面是整数保留的位数,小数点后面是小数保留位数, float默认是保留8位
以上是关于c语言%f输出float型数据的四舍五入问题的主要内容,如果未能解决你的问题,请参考以下文章
C语言有没有数据的四舍五入?啥情况下会用到四舍五入?数据类型转换?