在 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();
}
}
每當我們需要應用除法時,我們的首選應該是檢查運算元的資料型別。如果資料型別是整數,那麼可能會導致計算錯誤。
我們可以說這是一個邏輯錯誤,我們不會得到一個準確的答案,所以科學計算是有風險的,可能會導致任何嚴重的問題。它已經被清除以避免與敏感計算相關的問題;我們需要確定它的資料型別。
準確的結果應該是雙精度的。主要資料型別將保持整數;我們使用雙精度資料型別來獲得準確的結果。