读取文件的精度

时间:2013-10-05 17:25:35

标签: c++ precision

我正在使用C ++,并且在双重阅读的精确度方面存在问题

input_file>>temp_double;

文件中的数字类似于1234.567但是当它读入时,它的读数为1234.56699999999。那么我怎样才能让它在文件中读取,我在后面的函数中使用小数位,所以我需要它是正确的。文件中的数字范围为3-5位小数

2 个答案:

答案 0 :(得分:2)

正如其他人所说,double不能精确地代表许多小数值。它以二进制形式存储数据,最终完成舍入。许多可以用十进制精确表示的数字都有二进制的非终止表示。

如果您需要精确的表示,请查看例如Boost::Multiprecision

答案 1 :(得分:0)

floatdouble使用存储符号位,指数和小数值的IEEE标准存储其数据。由于小数部分的基数为10到2的转换,大多数十进制值在存储时不会精确精确。

另外,数学上,1234.566999999999999 .... = 1234.567