lau*_*svr 3 c++ floating-point rounding truncation
执行std::ceil双精度值时,该值将向上舍入为整数.所以3.3将成为4.0.哪个可以被铸造或截断为int.这将在逗号之后"切掉"部分.所以:
int foo = (int)std::ceil(3.3);
Run Code Online (Sandbox Code Playgroud)
所以乍一看,这将在foo中存储4个.但是,double是浮点值.所以它可能是4.000000001或3.999999999.后者将被截断为3.
但实际上我从未见过这种行为.我可以安全地假设任何实现都会返回4吗?或者只是IEEE-754这样做.或者我只是幸运吗?
圆形(或天花板)双精度始终始终是精确的.
对于低于2 ^(m + 1)的浮点数,其中m是mantissal位的数量,所有整数都具有精确的表示,因此可以精确地表示结果.
对于高于2 ^(m + 1)的浮点数...它们已经是整数.有意义的是,如果你考虑一下:没有足够的mantissal位向下延伸到小数点的右边.所以再次舍入/细化是准确的.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |