我只是对某件事感到好奇。C++双/长双精度行为
我有以下代码:
if (d1 == 2.3)
cout << "2.3 is my value\n";
if (d1 == 2.2999999999999998)
cout << "2.2999999999999998 is my value\n";
VS2013 C++ 11分的截图
而且它进入这两个IFS。我知道double的精度是15decimals,所以我将不得不为这种数据使用更适合的类型。
任何人都可以链接我一个详细的参考?也是一种“方式”存储“2.3”或比2.2999999999999998更精确的数据? (长双抛出我complie错误
Error 1 error C2398: Element '1': conversion from 'long double' to 'const
std::complex<double>::_Ty &' requires a narrowing conversion...
感谢
编辑:增加了复杂
尝试阅读[此问题](http://stackoverflow.com/q/16831464/315052)。另外,你是否尝试过'复杂的'? –
jxh
是的,我尝试了复杂的并没有编译错误,但他们两个存储仍然2.99999999999998 –
blfuentes
'2.3L'? ....... – jxh