为什么"double i = 1/12;"屈服于 i = 0?

Why does "double i = 1/12;" yields to i = 0?

本文关键字:屈服于 double 为什么      更新时间:2023-10-16

我认为标题说明了一切。我想将变量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/12被评估为整数数学,而不是浮点数学。

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

要获得预期的结果,您需要将数字作为浮点字面文字写下来,因此: 1.0/12.0

可以在此处找到更多详细信息:为什么我不能从两个int分开的双double

返回双倍