C

时间:2018-07-01 21:58:18

标签: c floating-point floating-accuracy

我不确定用C表示浮点数,以及有人可以得到多少精度。 在C源文件中,我具有宏:

#define NUMBER 123.367

在主要功能中,有以下2条指令:

float x = NUMBER;
printf("x is %f\n", x);

运行它,我得到:

  

x是123.366997

这非常接近123.367,但是有点搞乱了程序的目的。 有什么方法可以将x舍入到所需值吗?还是这是无法解决的浮点算术表示法的缺陷?

1 个答案:

答案 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位。