如何将两个整数相除得到一个双精度浮点数?
double num3 = (double)num1/(double)num2;
注意: 如果在C#中的任何参数是double
,将使用double
除法,其结果为
double
。因此,下面的代码也可以工作:
<code><code>double num3 = (double)num1/num2;
</code></code>
更多信息请参见:
double num3 = (double)(num1/num2);
。这只会给你一个整数除法结果的双精度浮点数表示! - The Lonely Coderdouble
而不是float
是否有理由?我可以看到问题要求使用double
,但无论如何我都很好奇。 - Kyle Delaneydouble
而不是float
。当你像这样写一个变量var a = 1.0;
时,这个1.0总是一个double
。我想这就是主要原因。 - this.myselfdouble
的精度为 53 位,它是一种二进制浮点格式,而 decimal
是一种……当然是十进制的,具有 96 位精度。因此,double
精确到约 15-17 个小数位,而 decimal
精确到 28-29 个小数位(并不是 double
的两倍精度)。更重要的是,decimal
实际上只使用了 128 位中的 102 位。 - phuclv将整数转换为双精度浮点数。
首先将其中一个转换为double类型。这种形式在许多语言中都适用:
real_result = (int_numerator + 0.0) / int_denominator
var result = 1.0 * a / b;
- Basicvar result = decimal.ToDouble(decimal.Divide(5, 2));
var firstNumber=5000,
secondeNumber=37;
var decimalResult = decimal.Divide(firstNumber,secondeNumber);
Console.WriteLine(decimalResult );
double
而不是 decimal
。 - Kyle Delaney我已经阅读了大部分的答案,我非常确定这是不可行的。无论你尝试将两个整数除以双精度或浮点数都不会发生。 但是你有很多方法可以使计算发生,只需在计算之前将它们转换为浮点数或双精度即可。
Ex.:
var v1 = 1 / 30 //the result is 0
var v2 = 1.00 / 30.00 //the result is 0.033333333333333333
double num3 = (double)num1/(double)num2;
不同于强制转换整数除法的结果:
double num3 = (double)(num1/num2);
假设num1 = 7,num2 = 12:
正确的代码将导致num3 = 0.5833333
将整数除法的结果强制转换将导致num3 = 0.00