我正在学习c ++。我不明白如何在文件中写一个long double值。 我不知道小数值的数量,所以我想我不能使用setprecision。你能告诉我一些提示吗?
因为这个主题对我来说是理解基本c ++的一种方式,所以我应该只使用
iostream
和fstream
。
我不明白为什么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)) ;
答案 0 :(得分:3)
解决方案可以基于数字限制。您将数据存储在double
中,因此请使用数字限制。
myfile << std::setprecision(std::numeric_limits<double>::digits10 + 2) << number