首页 > 解决方案 > 为什么 c++ 不能将 2/3 打印为 0.666667?

问题描述

我写

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

然后它返回

r = 0

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

标签: c++

解决方案


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

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

这些中的任何一个都可以工作:
double r = 2.0/3.0;
double r = 2.0/3;
double r = 2/3.0;


推荐阅读