我有一个小 C++ 问题。首先,“我的”语言是 Java,所以我是 C++ 新手。我有这个功能:
double readableDouble( double input )
{
return (int)(input*100+0.5)/100.0;
}
如您所见,没有什么特别的。现在我从另一个函数(在同一个类中)调用该函数:
cout << readableDouble(4434.21121131234323243) <<endl; // result: 4434.22 all okay
cout << readableDouble(tempTrack.getLenght()/1000.0); // result: 30.56 all okay
string lenght = boost::lexical_cast<string>(readableDouble((tempTrack.getLenght()/1000.0))); // result 30.55999999999982. expected: 30.56
getLenght() 返回一个双精度值。(两次通话相同的两倍)
我不太确定这是怎么回事?
.