C++ 如何防止读取错误的双数据C++;

C++ 如何防止读取错误的双数据C++;,c++,visual-c++,C++,Visual C++,我正在读5行包含字符串,双数据。 我正在读取字符串,然后删除最后一个字符,即逗号,然后读取双精度字符。(in是一个ifstream变量) 但是,当从下面的测试数据中读取时,第4个数字被读取为23.4899999998(如调试和打印中所示)。我怎样才能防止这种情况 &&&&&&, 456 &&&&&&,&, 1000000 $&&&&.&&, 12

我正在读5行包含字符串,双数据。 我正在读取字符串,然后删除最后一个字符,即逗号,然后读取双精度字符。(in是一个ifstream变量)

但是,当从下面的测试数据中读取时,第4个数字被读取为23.4899999998(如调试和打印中所示)。我怎样才能防止这种情况

&&&&&&, 456
&&&&&&,&, 1000000
$&&&&.&&, 123.38
&&&.&&&, 23.49
&&&.&&&, 23.4999
&&&E, 45

浮点值没有无限精度-它们是近似值

您的值读取得很好,并转换为最接近的近似值,该近似值可以存储在
double


你应该花些时间阅读。

这不是错误的阅读。这是正确的阅读,可能是错误的打印出来后。(这是正确的打印,但显然不是您想要的。如果您希望始终按照读取的方式打印浮点值,则只需使用字符串即可。)这不是“错误”。显示用于调试和打印的代码。具体说明什么是输入,什么是你想要的输出。我认为这不是重复,他问的是如何防止,而不是为什么happens@Rama理解它为什么发生是防止它的第一步(也是非常重要的/必要的)。结论:不要使用C++,不要使用浮点,使用C的十进制。
&&&&&&, 456
&&&&&&,&, 1000000
$&&&&.&&, 123.38
&&&.&&&, 23.49
&&&.&&&, 23.4999
&&&E, 45