对不起,如果我的问题太基础了.但有人可以解释我下面行为的原因吗?
int main () {
        double a =1.16;
        cout<<(a*100);   //returning 116
        cout<<(long)(a*100); //returning 115
        return 0;
}
为什么第一个cout返回116而第二个返回115?
请解释
将浮点数转换为整数类型会导致小数部分截断.仅保留整体部分.因此,如果您具有115.9999999浮点数,则它将作为整数转换为115.
现在,1.16 * 100不会116.0在IEEE754浮点中产生,而是一个非常小116的数字,即一个整数部分等于115和非常接近的小数部分的数字1.所以你离开了115.
| 归档时间: | 
 | 
| 查看次数: | 145 次 | 
| 最近记录: |