我有一个文本文件,其中包含每一行中的一些值,例如:
xxx.xxxxxx
我正在阅读每一行并使用 strd() 将它们转换为 str 并将它们存储在临时双变量中。
当我打印该双变量的值时,它输出的位数比点后的位数多。
预期的输出应该是:
xxx.xxxxxx
但我得到
xxx.xxxxxxxxxxxxxxxx
使用 setprecision(20)。知道为什么会这样吗?另外,我如何才能阅读文件中的确切内容?
我有一个文本文件,其中包含每一行中的一些值,例如:
xxx.xxxxxx
我正在阅读每一行并使用 strd() 将它们转换为 str 并将它们存储在临时双变量中。
当我打印该双变量的值时,它输出的位数比点后的位数多。
预期的输出应该是:
xxx.xxxxxx
但我得到
xxx.xxxxxxxxxxxxxxxx
使用 setprecision(20)。知道为什么会这样吗?另外,我如何才能阅读文件中的确切内容?
如果您要求输出精度为 20 位,您将得到它。你似乎很惊讶你得到了你明确要求的东西。除了 20 位精度之外的任何东西都会让我感到惊讶。
至于您阅读的内容,通常,小数点后 6 位的数字在 double 中没有精确表示;strtod()
将返回最接近的近似值。
double
我建议在您阅读并理解
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html之前不要尝试使用。
double
不是实数。
您正在阅读该文件中的内容,但无法存储确切的数字。并非每个数字都可以精确地表示为 a double
(或其他任何东西)。因此,您将得到一个近似值。