我不确定用C表示浮点数,以及有人可以得到多少精度。 在C源文件中,我具有宏:
#define NUMBER 123.367
在主要功能中,有以下2条指令:
float x = NUMBER;
printf("x is %f\n", x);
运行它,我得到:
x是123.366997
这非常接近123.367,但是有点搞乱了程序的目的。 有什么方法可以将x舍入到所需值吗?还是这是无法解决的浮点算术表示法的缺陷?
答案 0 :(得分:-1)
您应该使用double
,而不是float
。
#include <stdio.h>
#define NUMBER 123.367
int main (void) {
float f = NUMBER;
double d = NUMBER;
printf("f is %f\n", f);
printf("d is %f\n", d);
return 0;
}
这将为您提供:
f is 123.366997
d is 123.367000
“ double”使用53位精度,而“ float”仅使用24位。