在 C# 中通过将两个整数相除来获得双精度值

Luqman Khan 2023年10月12日
  1. C# 中整数数据类型的除法
  2. 在 C# 中使用 Double 关键字通过将两个整数相除来获得双精度值
  3. 在 C# 中使用 decimal.ToDouble 通过将两个整数相除来获得双精度值
在 C# 中通过将两个整数相除来获得双精度值

本文将讨论将两个整数相除并将结果作为双精度数据类型。

C# 中整数数据类型的除法

对整数数据类型应用除法运算只会得到完全除法的结果,并忽略小数点后的所有值。

下图显示了整数数据类型的值的划分。例如,我们用整数数据类型来划分两个数字,30 和 7。

code_integegers

当我们尝试用整数数据类型将两个值相除时,除法运算会获取小数位前的第一个值。就像在我们的例子中一样,当我们将 30 除以 7 时,该运算只给我们 4 作为 30/7 的商,因为它忽略了小数位后的所有剩余值。

在 C# 中使用 Double 关键字通过将两个整数相除来获得双精度值

为了克服这个问题并在小数点后包含结果的值,我们需要将数据类型从整数转换为双精度。对于整数类型,直接不可能得到带小数位的完整答案。

因此,当我们仅使用 (double) 将整数值转换为双精度值时,它将包括小数点后的所有值,这将为我们提供完整的除法结果。

code_double

在 C# 中使用 decimal.ToDouble 通过将两个整数相除来获得双精度值

当我们在开始时使用 double 关键字将 n1n2 转换为 double 并在操作数 n1n2 之间应用除法运算时,我们得到了 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();
  }
}

每当我们需要应用除法时,我们的首选应该是检查操作数的数据类型。如果数据类型是整数,那么可能会导致计算错误。

我们可以说这是一个逻辑错误,我们不会得到一个准确的答案,所以科学计算是有风险的,可能会导致任何严重的问题。它已经被清除以避免与敏感计算相关的问题;我们需要确定它的数据类型。

准确的结果应该是双精度的。主要数据类型将保持整数;我们使用双精度数据类型来获得准确的结果。

相关文章 - Csharp Math