我有一箇舊的VBA應用程序,它生成的值如1.123456789123456789123456789E-28。當我使用C#搜索等價數據類型時,我在SO Difference between decimal, float and double in .NET?中發現了這篇文章。根據這篇文章的建議,十進制數據類型在C#中具有最大的大小。所以我使用了十進制數據類型,但我發現小數似乎限制了VBA以指數形式表示的大值。所以我再次搜索了一下,發現這篇文章https://msdn.microsoft.com/en-us/library/ae55hdtk.aspx。正如本文中所述,相當於VBA指數形式的C#數據類型
非整數數量的值可以表示爲mmmEeee,其中mmm是 尾數(所述顯著位數)和電氣和電子設備的指數(一個功率的10 )。非整數類型的最高正值分別爲 7.9228162514264337593543950335E + 28(十進制),3.4028235E + 38(單倍)和1.79769313486231570E + 308(雙倍)。
這意味着Double數據類型具有最大的值範圍。所以現在我很困惑十進制和雙精度。
然後我做一個小實驗用代碼象下面
double dbl = 1.123456789123456789123456789E-28;
decimal dcl = 1.123456789123456789123456789E-28M;
MessageBox.Show(dbl.ToString());
MessageBox.Show(dcl.ToString());
的DBL打印值,因爲它是1.123456789123456789123456789E-28而DCL值變爲0.0000000000000000000000000001; 有人可以解釋這裏發生了什麼嗎?什麼是C#中的等效數據類型來表示像VBA中一樣精確的大指數值?
我想如果你進一步閱讀第一篇文章,你會明白不同之處以及何時使用它們。我想你可能誤解了你發佈的第一個鏈接。 – Hank