【发布时间】:2013-02-09 15:46:51
【问题描述】:
我遇到了一个小 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() 返回一个双精度值。 (两次调用相同的两倍)
我不太确定这是怎么回事?
.
【问题讨论】:
-
你期望什么输出?
-
哦,应该也是30.56。
-
也许你会发现this很有用
-
与您的问题无关,但拼写为“长度”。
-
谢谢(你可能注意到我不是母语人士);) - 年份,但应该没有四舍五入的问题。两个示例之间的唯一区别是 lexical_cast 的调用
标签: c++ visual-studio visual-c++ boost rounding