This question already has answers here:
Why are floating point numbers inaccurate?
(6个答案)
3年前关闭。
我开始学习
如果我运行上述程序,我将得到
这产生输出
总和= 867.6921
并且任何输入都将始终提供7位数的精度。数字格式如下:
0.000000E + 07
0000000
000000.0
00000.00
0000.000
000.0000
...等等
(6个答案)
3年前关闭。
我开始学习
c
。今天,当我在编写程序时,我发现了一件有趣的事情,并制作了另一个小程序(类似于我的问题)进行检查。#include<stdio.h>
int main(void)
{
float num1=867.0;
float num2=.6921;
printf("sum = %.4f \n",num1+num2);
return 0;
}
如果我运行上述程序,我将得到
867.6921
作为答案。但是,如果我将.4%f
更改为%f
,答案将更改为sum = 867.692078
。为什么输出发生变化?另外,有什么方法可以不用.4%f
来获得答案吗? 最佳答案
float
类型的精度大约为七位数(可以是6-9位数之间的任何值)。一种替代方法是使用g
代替f
。这将固定数字中的精确位数,而不仅仅是小数点后的位数。
printf("sum = %.7g \n",num1+num2);
这产生输出
总和= 867.6921
并且任何输入都将始终提供7位数的精度。数字格式如下:
0.000000E + 07
0000000
000000.0
00000.00
0000.000
000.0000
...等等
关于c - 浮点数在C中四舍五入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36636352/
10-12 20:19