我有一个包含数百个数字的file.txt.
它们在点之后有很多位数(最多20个),我需要在没有截断的情况下得到它们,否则它们会在以下计算中引入错误.我用matlab制作了这些数字,所以它具有可怕的精度,但现在我必须在我的程序中复制这种行为.
我这样做了:
fstream in;
in.open(file.txt, ios::in);
long double number;
in>>number;
我也尝试过这个
in.precision(20);
in>>number;
在每个“>>”之前操作但是徒劳无功
解决方法:
以下在我的系统上运行正常(Win7,VS2012):
#include <fstream>
#include <iostream>
int main (void)
{
std::ifstream file ("test.txt") ;
long double d = 0 ;
file >> d ;
std::cout.precision (20) ;
std::cout << d << "\n" ;
return 0 ;
}
文本文件:
2.7239385667867091
输出:
2.7239385667867091
如果这不适用于您的系统,则需要使用第三方编号库.