我正在处理一些数学计算。 我正在失去精确度。但我需要极高的精确度。 然后我用下面给出的代码检查精度问题。 获得精度的任何解决方案?
#include <iostream>
#include <stdlib.h>
#include <cstdio>
#include <sstream>
#include <iomanip>
using namespace std;
int main(int argc,char** arvx)
{
float f = 1.00000001;
cout << "f: " <<std::setprecision(20)<< f <<endl;
return 0;
}
输出是 f:1
答案 0 :(得分:1)
如果你真的想要精确表示这些类型的数字(即,小数点之外的小部分非常小),那么浮点类型如float
甚至是更精确的double
可能仍然无法在所有情况下为您提供所需的确切结果。浮点类型只能使用小的小数分量来近似某些值。
您可能需要使用某种高精度定点C ++类型,以便在您的值中获得非常小分数的精确表示,并在您对此类数据执行数学运算时得到准确的计算结果数字。以下问题/答案可能会为您提供一些有用的指示:C++ fixed point library?
答案 1 :(得分:-1)
在c ++中
float f = 1.00000001;
小数点后仅支持6位数
float f = 1.000001;
如果你想要更多的实际计算,请使用double