编译器返回一个整数而不是double

时间:2015-08-23 04:19:44

标签: c#

我有一个函数,它接受3个double值,不是数组或类似的整数或类似的,是在调用此函数之前计算的3个double值。然后,函数应该返回一个double值并且确实...但是其中一个术语被认为是一个整数,特别是(5/3)= 1.0 我所做的是用1.6667替换(5/3) 为什么会这样?任何的想法?这是代码:

private static double get_fa(double cc, double R, double fy)
{
  double num, den, fa;
  if (cc<=200)
  {
    if (R <= cc)
    {
      num = (1 - (Math.Pow(R, 2) / (2 * Math.Pow(cc, 2)))) * fy;
      den = (5/3) + (3 * R) / (8 * cc) - Math.Pow(R, 3) / (8 * Math.Pow(cc, 3));
      fa = num / den;
    }
    else
    {
      fa = (12 * Math.Pow(Math.PI, 2) * E) / (23 * Math.Pow(R, 2));
    }
    return fa;
  }
  else
  {
    return 0;
  }
}

2 个答案:

答案 0 :(得分:4)

“当你分割两个整数时,结果总是一个整数。例如,7 / 3的结果是2。”

来源:/ Operator (C# Reference)

要解决此问题,您可以使用双常量而不是整数:( 5.0 / 3.0 )

代码中的其他分区按预期工作,因为至少有一个操作数已经是双精度数。但是,让这个计算中的所有常量加倍而不是整数并不是一个坏主意,以帮助使意图更清晰。

答案 1 :(得分:0)

如果您希望所有值都在“Double”中,则在您的代码中使用小数点后面的所有整数为“0”, 例如:5将转换为5.0

使用此功能您的功能仅使用双数据类型..

For eg: 
Replace (5 / 3)
With (5.0 / 3.0)