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

C/C++ : double constants in class are inaccurate

本文关键字:常量 不准确 c++      更新时间:2023-10-16

我正在用c++编写一个类,需要一些在整个类中都可以访问的常量。通常我会使用#define, const-或静态声明,但这里发生了一些奇怪的事情:比如我写

#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

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

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

如果需要输出全位数的双精度数,需要设置正确的精度:

std::cout << std::fixed;
std::cout << std::setprecision(7) << Rm << std::endl;
双打印demo

Try

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