0

我有一个文本文件,其中包含每一行中的一些值,例如:

xxx.xxxxxx

我正在阅读每一行并使用 strd() 将它们转换为 str 并将它们存储在临时双变量中。

当我打印该双变量的值时,它输出的位数比点后的位数多。

预期的输出应该是:

xxx.xxxxxx

但我得到

xxx.xxxxxxxxxxxxxxxx

使用 setprecision(20)。知道为什么会这样吗?另外,我如何才能阅读文件中的确切内容?

4

2 回答 2

4

如果您要求输出精度为 20 位,您将得到它。你似乎很惊讶你得到了你明确要求的东西。除了 20 位精度之外的任何东西都会让我感到惊讶。

至于您阅读的内容,通常,小数点后 6 位的数字在 double 中没有精确表示;strtod()将返回最接近的近似值。

double我建议在您阅读并理解 http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html之前不要尝试使用。 double不是数。

于 2012-08-15T08:04:56.793 回答
2

您正在阅读该文件中的内容,但无法存储确切的数字。并非每个数字都可以精确地表示为 a double(或其他任何东西)。因此,您将得到一个近似值。

于 2012-08-15T07:47:18.180 回答