【发布时间】:2016-06-02 00:17:15
【问题描述】:
这是我的问题:
#include <stdio.h>
#include <math.h>
int main()
{
int n = static_cast<int>(50 * (60 / 99));
printf("Floor: %d\n", n);
return 0;
}
为什么函数应该打印 30 却打印 0?
因为计算结果是:30.30303030
【问题讨论】:
-
它更像是 0.6 .. 怎么才能让孔计算返回 30?
-
60/99 被评估为整数数学,因此结果为 0。将任一值更改为浮点数:`60.0f / 99.f` 将是完成这项工作的一种方法。跨度>
-
一种存档方法是使用另一种语言,例如 JavaScript,或者您开发的支持
static_cast、始终返回浮点值的除法以及您想要的所有其他功能的语言。 -
因缺乏研究努力而被否决。这个问题的答案在 SO 和其他资源中都很容易找到。
-
太糟糕了,我无法向您显示我的搜索历史...我确实搜索了大约 2 个小时...
标签: c++ c++11 visual-c++