C ++中的分区没有按预期工作

时间:2011-05-23 18:06:07

标签: c++ division

我正在研究别的东西,但是一切都是零,所以我做了这个简约的例子,输出仍然是0。

#include <iostream>

int main(int argc, char** argv)
{
  double f=3/5;
  std::cout << f;
  return 0;
}

我错过了什么?

6 个答案:

答案 0 :(得分:49)

你错过了3和5是整数的事实,所以你得到整数除法。要使编译器执行浮点除法,请使其中一个为实数:

 double f = 3.0 / 5;

答案 1 :(得分:17)

不是<{1}},您也可以.03./53/5.3e+0 / 53 / 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;
}