在 C# 中通过将两个整数相除来获得双精度值
Luqman Khan
2023年1月30日
2022年4月20日
本文将讨论将两个整数相除并将结果作为双精度数据类型。
C# 中整数数据类型的除法
对整数数据类型应用除法运算只会得到完全除法的结果,并忽略小数点后的所有值。
下图显示了整数数据类型的值的划分。例如,我们用整数数据类型来划分两个数字,30 和 7。
当我们尝试用整数数据类型将两个值相除时,除法运算会获取小数位前的第一个值。就像在我们的例子中一样,当我们将 30 除以 7 时,该运算只给我们 4 作为 30/7
的商,因为它忽略了小数位后的所有剩余值。
在 C# 中使用 Double
关键字通过将两个整数相除来获得双精度值
为了克服这个问题并在小数点后包含结果的值,我们需要将数据类型从整数转换为双精度。对于整数类型,直接不可能得到带小数位的完整答案。
因此,当我们仅使用 (double)
将整数值转换为双精度值时,它将包括小数点后的所有值,这将为我们提供完整的除法结果。
在 C# 中使用 decimal.ToDouble
通过将两个整数相除来获得双精度值
当我们在开始时使用 double
关键字将 n1
和 n2
转换为 double 并在操作数 n1
和 n2
之间应用除法运算时,我们得到了 30 除以 7 的完整答案为 4.28571428571429。
在下面的代码中,我们使用 decimal.ToDouble
在应用除法运算之前将整数值转换为双精度值。当我们将所有这些值用作双精度数据类型时,将有助于获得良好的结果。
以下是本文中使用的完整代码部分。
using System;
public class Division
{
public static void Main(string[] args)
{
int n1, n2;
n1 = 30;
n2 = 7;
int result = n1 / n2;
Console.WriteLine("result of normal integer division:" + result +"\n");
double res=decimal.ToDouble(n1) / decimal.ToDouble(n2);
Console.WriteLine("result by converting to double through decimal.ToDouble() is " + res +"\n");
res = (double)n1 / (double)n2;
Console.WriteLine("result by converting to double through (double) is " + res + "\n");
Console.Read();
}
}
每当我们需要应用除法时,我们的首选应该是检查操作数的数据类型。如果数据类型是整数,那么可能会导致计算错误。
我们可以说这是一个逻辑错误,我们不会得到一个准确的答案,所以科学计算是有风险的,可能会导致任何严重的问题。它已经被清除以避免与敏感计算相关的问题;我们需要确定它的数据类型。
准确的结果应该是双精度的。主要数据类型将保持整数;我们使用双精度数据类型来获得准确的结果。