c ++ static_cast返回零

时间:2016-06-02 00:17:15

标签: c++ c++11 visual-c++

这是我的问题:

rx_data

为什么功能在打印30时会打印0?

因为计算结果是:30.30303030

1 个答案:

答案 0 :(得分:1)

计算结果不是30.30303030而是0,因为

    计算
  1. 60 / 99。结果被截断为零,因为这是整数除法,结果为0
  2. 计算
  3. 50 * 0。结果是0。
  4. 您应该使用double进行计算。

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
    
        int n = static_cast<int>(50.0 * (60.0 / 99.0));
    
        printf("Floor: %d\n", n);
    
        return 0;
    }
    

    使用50 * (60.0 / 99)50 * (60 / 99.0)代替50.0 * (60.0 / 99.0)也可以,因为其他操作数将转换为double以匹配类型,但使用50.0 * (60 / 99) isn'好,因为60 / 99是0。