为什么 c++ 不将 2/3 打印为 0.666667?

Why does c++ not print out 2/3 as 0.666667?

本文关键字:666667 打印 c++ 不将 为什么      更新时间:2023-10-16

我写了

double r = 2/3;
cout << "r = " << r << endl;

然后它返回

r = 0

我希望它显示 r = 0.666667 或类似的东西而不是 0。特别是我需要使用 r = 2/3 在我的算法中进行计算。我该如何解决这个问题?

因为23都是int类型的文字,整数除法在C++中产生整数结果。您所做的是先执行整数除法,然后将整数结果提升为double

相反,您希望将至少一个操作数强制转换为floatdouble(小数浮点类型(,然后另一个操作数将提升为相同的类型,并且结果值也将floatdouble

以下任一方法都可以:
double r = 2.0/3.0;
double r = 2.0/3;
double r = 2/3.0;