C#中的decimal類型及用法

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 個有效位

System.Decimal

如果希望實數被視爲 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();


        }
    }
}

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章