在 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