我需要一个简单的浮点舍入函数,因此:
double round(double);
round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)
我能找到ceil()和floor()在math.h中-但不是round().
它是以另一个名称存在于标准C++库中,还是缺少?
我有一行代码
double i = 1 + (long)1.5* 5.0f
Run Code Online (Sandbox Code Playgroud)
我的问题是转换顺序和结果是什么?一直在寻找这样的例子,但无济于事.有什么好的指南可以帮助我理解它吗?
今天发现VS2010不支持roundC++项目中的功能.有关该功能的信息已在此处找到.还注意到也没有trunc功能.
所以尝试了一些东西并注意到一些可能有助于这种情况的行为.
float a = 2.999;
int b = (int)a; //gives 2
Run Code Online (Sandbox Code Playgroud)
float a = -2.999;
int b = (int)a; //gives -2
Run Code Online (Sandbox Code Playgroud)
这可以作为截断,所以我可以使用它,但是我不想使用导致未定义行为的代码.所以想问一下这是定义的还是未定义的行为.
编辑:因为我正在使用VS2008,所以我不会问C++ 11.