如何在文件中写入双精度值,而不知道其流的精度

How to write a double value in a file, without knowing its precision ofstream

本文关键字:不知道 精度 双精度 文件      更新时间:2023-10-16

我正在学习c++。我不明白如何在文件中写入长双精度值。我不知道小数点值的数量,所以我认为我不能使用设置精度。你能给我看一些提示吗?

因为这个主题对我来说是理解基本 c++ 的一种方式,所以我应该只使用 iostreamfstream .

我不明白为什么流决定截断我的号码

long double number=0.12345678987654321012345678987654321012 ..etc;
ofstream myfile("name.txt", ios::binary);
myfile << number ;

它只写 0.1234

到目前为止我尝试过的事情:

myfile << number ;

    char     *conversion = reinterpret_cast<char *>(&number );
    myfile << *(reinterpret_cast<double *>(conversion));
    myfile .close();

    myfile.write((char *)&resultat, sizeof(long double))  ;

解决方案可以基于数字限制。您将数据存储在double中,因此请使用其数字限制。

myfile << std::setprecision(std::numeric_limits<double>::digits10 + 2) << number
相关文章: