C#中的decimal類型及用法
轉載:https://blog.csdn.net/u010771437/article/details/40867831/
decimal(C#)
decimal 關鍵字指示 128 位數據類型。 與浮點型相比,decimal 類型具有更高的精度和更小的範圍,這使它適合於財務和貨幣計算。decimal 類型的大致範圍和精度如下所示。
類型 |
大致範圍 |
精度 |
.NET Framework 類型 |
---|---|---|---|
decimal |
(-7.9 x 1028 - 7.9 x 1028) / (100 - 28) |
28-29 個有效位 |
如果希望實數被視爲 decimal 類型,請使用後綴 m 或 M,例如:
decimal myMoney = 300.5m;
如果沒有後綴 m,則數字將被視爲 double 類型並會生成編譯器錯誤。
整型將被隱式轉換爲 decimal 類型,其計算結果爲decimal。 因此,可以使用整數文本初始化十進制變量而不使用後綴,如下所示:
decimal myMoney = 300;
在浮點型和 decimal 類型之間不存在隱式轉換;因此,必須使用強制轉換以在這兩個類型之間轉換。例如:
decimal myMoney = 99.9m; double x = (double)myMoney; myMoney = (decimal)x;
還可以在同一表達式中混合使用 decimal 和數值整型。但是,不進行強制轉換就混合使用 decimal 和浮點型將導致編譯錯誤。
下面的示例嘗試添加double 和decimal 變量,這會導致編譯器錯誤。
double dub = 9;
Console.WriteLine(dec + dub); // error:"+"運算符不能用於連接decimal和double類型
Console.WriteLine(dec + (decimal)dub); //正確
Console.WriteLine((double)dec + dub); // 正確
在下面的示例中,同一個表達式中混合使用了decimal 和 int。計算結果爲 decimal 類型。沒有問題
publicclass TestDecimal
{
static void Main()
{
decimal d = 9.1m;
int y = 3;
Console.WriteLine(d + y);// 結果會被隱式轉換爲decimal類型
}
}
// 輸出12.1
設置十進制輸出的格式
可以通過使用 String.Format 方法或Console.Write 方法(其調用String.Format())來設置結果的格式。 貨幣格式是使用標準貨幣格式字符串“C”或“c”指定的,如下示例所示:
在此示例中,通過使用貨幣格式字符串來設置輸出的格式。請注意,x 被舍入,因爲其小數位數超出了 $0.99。表示最大精確位數的變量 y 嚴格按照正確的格式顯示。
public class TestDecimalFormat
{
static void Main()
{
decimal x = 0.999m;
decimal y = 9999999999999999999999999999m;
Console.WriteLine("My amount = {0:C}", x);
Console.WriteLine("Your amount = {0:C}", y);
}
}
/*
輸出: My amount = $1.00
Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/
------------------------------------------------
C#中decimal的用法
轉載:https://blog.csdn.net/shoneworn/article/details/50408616
decimal擁有比float更高的精度,最高能處理到小數點後面的28位。適合用在財務類等對數字精確度要求比較高的場合。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace cxx { class test { static void Main(string[] args) { decimal price; decimal discount; decimal discount_price; //注意:必須要帶“m”,否則將和標準的浮點類型一樣。而我們要求的卻是 //用來計算貨幣類的浮點數,但是可以給其賦整數值。 // decimal 對小數的運算更加的準確。 price = 19.95m; discount = 0.15m; //discount rate is 15% discount_price = price - (price * discount); Console.WriteLine("Discounted price :$ " + discount_price); Console.ReadKey(); } } }
結果: