Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何将两个整数除得到一个双精度数?_C#_Math_Int_Double - Fatal编程技术网

C# 我如何将两个整数除得到一个双精度数?

C# 我如何将两个整数除得到一个双精度数?,c#,math,int,double,C#,Math,Int,Double,如何将两个整数除以一个double?首先将其中一个整数转换为double。此表单使用多种语言: real_result = (int_numerator + 0.0) / int_denominator 将整数转换为双精度。要转换数字: double num3 = (double)num1/(double)num2; 注意:如果C#中的任何参数是double,则使用double除法,这将导致double。因此,以下措施也会起作用: double num3 = (double)num1/nu

如何将两个整数除以一个double?

首先将其中一个整数转换为double。此表单使用多种语言:

 real_result = (int_numerator + 0.0) / int_denominator

将整数转换为双精度。

要转换数字:

double num3 = (double)num1/(double)num2;
注意:如果C#中的任何参数是
double
,则使用
double
除法,这将导致
double
。因此,以下措施也会起作用:

double num3 = (double)num1/num2;
有关更多信息,请参阅:


补充@NoahD的答案

要获得更高的精度,可以强制转换为十进制:

(decimal)100/863
//0.1158748551564310544611819235
或:

双精度表示分配64位,而十进制表示分配128位

(double)100/863
//0.11587485515643106
对“精确性”的深入解释
有关二进制浮点表示及其精度的更多详细信息,请看Jon Skeet,他在那里谈到了
浮点
双倍
,他在那里谈到了
小数
,,我已经阅读了大部分答案,我非常确定这是不可能实现的。无论你想把两个int分成double还是float,都不会发生。
var firstNumber=5000,
secondeNumber=37;

var decimalResult = decimal.Divide(firstNumber,secondeNumber);

Console.WriteLine(decimalResult );


但是您有很多方法可以进行计算,只需将它们转换为float或double,计算就可以了。

假设在访谈中问到这一点,整数除法的结果总是整数。您必须使用如下所示的类型转换。不同类型的除法:整数、浮点、十进制-在中讨论过,不知道这在C#中是否相同,但C只要求您转换第一个除法-它将自动使double/int成为double。@Pax,如果C或C#中的任何参数是double,则使用双除法(导致双精度)。注意不要这样做:-
double num3=(double)(num1/num2)
。这只会给你整数除法结果的双重表示!假设你不需要额外的精度,有没有理由转换为
double
而不是
float
?我可以看到
double
的问题,但我还是很好奇。@KyleDelaney just cause在C中我们通常使用
>double
而不是
float
。当你写一个变量,就像
var a=1.0;
,这个1.0总是
double
。我想这是主要原因。具体来说,你可以像这样将整数转换成double:(double)MyIntegerValue更容易实现…
var result=1.0*a/b;
@Basic有100种实现方法。我更喜欢加法,因为加法更快,尽管强制转换显然更快。这个问题似乎需要
double
而不是
decimal
。错了!
double
的精度是53位,它是二进制floating point格式,而
decimal
是一种…十进制格式,当然有。因此
double
精确到~15-17位十进制数字和28-29位十进制数字(而不是
double
精度的两倍)。更重要的是
decimal
实际上只使用了128位hanks@phuclv中的102位,我的意思是说“空间分配”。关于小数的精度,您是对的(96)是的,尾数有52位,但仍然有一个隐藏位,产生了53位的有效位。十进制。除法很好!Thx5=第一个数字,2=第二个数字。你可以在帖子中添加信息。请不要在评论中添加它。这并不能回答问题。一旦你有足够的你将能够;相反,.-你好,欢迎来到SO!请阅读,并确保在你的答案中包含新信息(其他答案中没有)。
var firstNumber=5000,
secondeNumber=37;

var decimalResult = decimal.Divide(firstNumber,secondeNumber);

Console.WriteLine(decimalResult );
var result = decimal.ToDouble(decimal.Divide(5, 2));