Woo*_*kai 59 c c++ casting rounding
有一段时间,我发现自己舍入了一些数字,我总是要将结果转换为整数:
int rounded = (int) floor(value);
Run Code Online (Sandbox Code Playgroud)
为什么所有舍入函数(ceil()
,floor()
)都返回一个浮点数,而不是一个整数?我发现这非常不直观,并且希望得到一些解释!
Sea*_*ney 67
这些函数返回的整数值可能太大而无法存储在整数类型(int,long等)中.为了避免产生未定义结果的溢出,应用程序应在将返回值分配给整数类型之前对返回值执行范围检查.
来自ceil(3)Linux手册页.
sha*_*oth 28
那是因为float
范围比int
s 宽.如果这些函数返回的值不适合,你会期望得到什么int
?这将是未定义的行为,您将无法在程序中检查它.
归档时间: |
|
查看次数: |
20331 次 |
最近记录: |