C / C ++:类中的双常量是不准确的

时间:2013-05-29 23:37:26

标签: c++ double constants

我正在用C ++编写一个类,它需要一些可以在整个类中访问的常量。通常我会使用#define,一个常量或静态声明,但有一些奇怪的事情发生: 所以例如我写

#define Rm 8.3144621

但是std::cout << Rm << std::endl;

打印8.31446。

我也试过

#define Rm 831.44621e-2

const double Rm = 8.3144621

static double Rm = 8.3144621

以及初始化或强制转换为double常量的所有可能方法。

是否有解决方案或是否必须使用字段?

2 个答案:

答案 0 :(得分:6)

如果需要输出所有数字的双精度数,则需要设置正确的精度:

std::cout << std::fixed;
std::cout << std::setprecision(7) << Rm << std::endl;

在此处观看现场演示:Double print Demo

答案 1 :(得分:0)

尝试

std::cout << std::setprecision(8) << Rm << std::endl