我想在比较期间控制双精度,然后使用 C++ 回到默认精度。
我打算使用 setPrecision()
来设置精度。那么将精度设置回默认值的语法(如果有)是什么?
我正在做这样的事情
std::setPrecision(math.log10(m_FTOL));
我做了一些事情,之后我想回到默认的双重比较。
我是这样修改的,还是有一些错误
std::streamsize prec = std::ios_base::precision();
std::setprecision(cmath::log10(m_FTOL));
与 cmath
在编译时为假,而 std::ios_base
在编译时也是假的。你能帮忙吗?
原文由 kiriloff 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在更改 之前 获得精度,使用
std::ios_base::precision
然后使用它稍后将其更改回来。您可以通过以下方式看到这一点:
输出:
上面的代码显示了两种设置精度的方法,第一种是调用
std::cout.precision (N)
第二种是使用流操纵器std::setprecision(N)
。但是您需要记住,精度是用于通过流 输出 值,它不会直接影响值本身与代码的比较,例如:
换句话说,即使 输出 可能是
3.14159
,该值本身仍然是完整的3.141592653590
(当然要受到正常的浮点限制)。如果你想这样做,你需要检查它是否足够接近而不是相等,代码如下: