为什么"加倍i = 1/12;"收益率为i = 0?

时间:2017-12-15 12:57:59

标签: c++ fractions

我认为标题说明了一切。我想将变量i定义为1/12分数。但是,我是0。

double i = 1/12;
std::cout << i; // Output: 0

或者,更具体地说,我想计算某事的力量:

im_ = std::pow((1 + i), (1/12)) - 1;

但是,编译将(1/12)评估为0,因此结果是错误的。

1 个答案:

答案 0 :(得分:1)

简单,因为1/12被评估为整数数学,而不是浮点数学。

1/12变为0,因为整数数学不考虑小数部分。

要获得预期的结果,您需要将数字写为浮点字面值,如下所示:1.0/12.0

可在此处找到更多详细信息:Why can't I return a double from two ints being divided