相关疑难解决方法(0)

round()for C++中的float

我需要一个简单的浮点舍入函数,因此:

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++库中,还是缺少?

c++ floating-point rounding

227
推荐指数
11
解决办法
36万
查看次数

显式/隐式类型转换c ++

我有一行代码

double i = 1 + (long)1.5* 5.0f
Run Code Online (Sandbox Code Playgroud)

我的问题是转换顺序和结果是什么?一直在寻找这样的例子,但无济于事.有什么好的指南可以帮助我理解它吗?

c++ implicit-conversion explicit-conversion

4
推荐指数
1
解决办法
585
查看次数

将浮点数转换为整数定义的行为

今天发现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.

c++ floating-point undefined-behavior

-1
推荐指数
1
解决办法
228
查看次数