如何在文件中写入double值,而不知道它的精度

时间:2015-06-11 09:27:46

标签: c++

我正在学习c ++。我不明白如何在文件中写一个long double值。 我不知道小数值的数量,所以我想我不能使用setprecision。你能告诉我一些提示吗?

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

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

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))  ;

1 个答案:

答案 0 :(得分:3)

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

myfile << std::setprecision(std::numeric_limits<double>::digits10 + 2) << number