c++ - 为什么 c++ 不能将 2/3 打印为 0.666667?
问题描述
我写
double r = 2/3;
cout << "r = " << r << endl;
然后它返回
r = 0
我希望它显示 r = 0.666667 或类似的东西而不是 0。特别是我需要使用 r = 2/3 在我的算法中进行计算。我该如何解决?
解决方案
因为2
和3
都是 类型的文字int
,整数除法在 C++ 中产生整数结果。您所做的是先执行整数除法,然后将整数结果提升为double
.
相反,您希望将至少一个操作数转换为float
or double
(小数浮点类型),然后将另一个操作数提升为相同类型,并且结果值也将是float
or double
。
这些中的任何一个都可以工作:
double r = 2.0/3.0;
double r = 2.0/3;
double r = 2/3.0;
推荐阅读
- python - Nesterov 的加速梯度下降是如何在 Tensorflow 中实现的?
- if-statement - if else 循环不工作
- python - 在 Django 2.0 中使用 Slack RTM API
- powershell - 是否有等待从 Powershell 中的 Get-Content 中“打破”等待循环?
- java - 通过 mysql 工作台插入表情符号可以工作,但不能通过 java?
- apex - 如何在oracle apex中重新排列或删除#BODY#下的内容
- python - 将单个电子邮件发送给多个收件人
- lua - Lua没有实例化局部变量fast enogh来打印吗?嵌入式ESP8266
- c# - 我应该按照 Visual Studio 的建议将 @Html.Partial 更改为 @Html.PartialAsync 吗?
- r - 使用 str_detect 和 regex 匹配字符串