我有一个函数,它接受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;
}
}
答案 0 :(得分:4)
“当你分割两个整数时,结果总是一个整数。例如,7 / 3
的结果是2
。”
要解决此问题,您可以使用双常量而不是整数:( 5.0 / 3.0 )
。
代码中的其他分区按预期工作,因为至少有一个操作数已经是双精度数。但是,让这个计算中的所有常量加倍而不是整数并不是一个坏主意,以帮助使意图更清晰。
答案 1 :(得分:0)
如果您希望所有值都在“Double”中,则在您的代码中使用小数点后面的所有整数为“0”, 例如:5将转换为5.0
使用此功能您的功能仅使用双数据类型..
For eg:
Replace (5 / 3)
With (5.0 / 3.0)