我觉得这很愚蠢,因为我知道怎么做101方法,但不是书中定义的方式.(注意,我知道C++)
到目前为止,我们只讨论了C++的基础知识.所以基本上,我们知道变量,赋值和基本的转换.
在这本书中,我遇到了这部分问题:
所以我有一些简单的代码:
double n;
cout<<"Number: ";
cin >> n;
cout <<endl<<static_cast<int>(n)<<endl;
Run Code Online (Sandbox Code Playgroud)
但我意识到这对我不起作用.它总是截断小数,使1.9 - > 1而不是预期的1.9 - > 2
我如何使用我所知道的东西解决这个问题?(如,没有round()或if语句等)
这是标准合规性问题吗?在学校我认为我在Windows XP 32位上使用Visual C++ 2005有类似的东西,但现在我在家里试图做同样的事情并且它不起作用.我的家编译器是OpenBSD 64bit上的gcc 3.3.5.或者这可能是书中的拼写错误?
eph*_*ent 31
static_cast<int>(n+0.5)
或者static_cast<int>(n >= 0 ? n + 0.5 : n - 0.5)对负面的更正确的行为n.