我正在研究别的东西,但是一切都是零,所以我做了这个简约的例子,输出仍然是0。
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
我错过了什么?
答案 0 :(得分:49)
你错过了3和5是整数的事实,所以你得到整数除法。要使编译器执行浮点除法,请使其中一个为实数:
double f = 3.0 / 5;
答案 1 :(得分:17)
不是<{1}},您也可以.0
或3./5
或3/5.
或3e+0 / 5
或3 / 5e-0
或...只需要涉及一个指标,以便编译器知道它应该将除法作为浮点执行。
另一种可能性:0xCp-2 / 5
。这种打字要多得多,但毫无疑问你正在做什么。
或者只是使用double f=double(3)/5
,这也可以解决问题......
答案 2 :(得分:9)
试试这个:
double f = 3.0/5.0;
这应该可以解决您的问题
答案 3 :(得分:5)
尝试在其中一个除数后加.0
。这会将它们转换为浮点文字。
答案 4 :(得分:2)
您正在使用整数。你可以做很多事情使你的常数像左下角状态一样加倍,但这并不是很好的清洁。它很难阅读和混淆。如果你想要3和5使它们3.0和5.0。如果他们被迫阅读你的代码,每个人都会知道你的意思。他/她陈述的大部分内容确实要求您了解C / C ++以及如何使用浮动来存储头部或尾部。
答案 5 :(得分:0)
以防万一,您将通用变量保存为int
,并希望获得比率为double
:
using namespace std;
int main()
{
int x = 7;
int y = 4;
double ratio;
ratio = static_cast<double>(x)/static_cast<double>(y);
cout << "ratio =\t"<<ratio<< endl;
}