聊聊 C# 中的ToString()數(shù)字格式化
應(yīng)用場景
數(shù)字格式化在以下場景中非常有用:
- 貨幣表示:顯示不同國家和地區(qū)的貨幣格式。
- 百分比顯示:將數(shù)字轉(zhuǎn)換為百分比形式。
- 自定義數(shù)字格式:根據(jù)需求自定義數(shù)字的顯示方式。
- 科學(xué)計(jì)數(shù)法表示:對(duì)于非常大或非常小的數(shù)值,使用科學(xué)計(jì)數(shù)法。
- 固定小數(shù)點(diǎn)表示:特定小數(shù)位數(shù)的表示,常用于財(cái)務(wù)報(bào)告。
例子 1: 貨幣表示
decimal price = 1234.56m;
string formattedPrice = price.ToString("C");
Console.WriteLine(formattedPrice); // 輸出: $1,234.56 或其他貨幣格式,取決于當(dāng)前區(qū)域設(shè)置
在這個(gè)例子中,"C"格式指定了貨幣格式。輸出的貨幣符號(hào)和小數(shù)位數(shù)會(huì)根據(jù)當(dāng)前系統(tǒng)的區(qū)域設(shè)置來決定。
例子 2: 百分比顯示
double completion = 0.856;
string formattedCompletion = completion.ToString("P");
Console.WriteLine(formattedCompletion); // 輸出: 85.6%
這里,"P"格式將數(shù)字轉(zhuǎn)換為百分比形式,通常會(huì)自動(dòng)乘以100,并添加百分號(hào)。
例子 3: 自定義數(shù)字格式
double number = 12345.6789;
string formattedNumber = number.ToString("#,##0.00");
Console.WriteLine(formattedNumber); // 輸出: 12,345.68
圖片
自定義格式"#,##0.00"指定了數(shù)字的顯示方式,包括千位分隔符和兩位小數(shù)。
例子 4: 科學(xué)計(jì)數(shù)法表示
double value = 1234567890;
string formattedValue = value.ToString("E");
Console.WriteLine(formattedValue); // 輸出: 1.234567890E+009
使用"E"格式指定了科學(xué)計(jì)數(shù)法。輸出的結(jié)果包含一個(gè)指數(shù),表示數(shù)字的大小。
例子 5: 固定小數(shù)點(diǎn)表示
double pi = 3.14159265;
string formattedPi = pi.ToString("F2");
Console.WriteLine(formattedPi); // 輸出: 3.14
圖片
"F2"格式指定了固定的兩位小數(shù),常用于需要固定小數(shù)點(diǎn)精度的場合。
結(jié)論
C#中的ToString()方法提供了一種靈活且強(qiáng)大的方式來格式化數(shù)字。無論是為了更好地展示數(shù)據(jù)、滿足本地化需求,還是簡化復(fù)雜的數(shù)值表示,ToString()都能夠滿足開發(fā)者的需求。通過使用標(biāo)準(zhǔn)的或自定義的格式字符串,開發(fā)者可以輕松地將數(shù)值轉(zhuǎn)換為所需的格式。然而,需要注意的是,ToString()方法的默認(rèn)行為可能會(huì)因當(dāng)前區(qū)域設(shè)置的不同而有所變化,因此在處理國際化應(yīng)用時(shí),應(yīng)當(dāng)考慮顯式指定區(qū)域設(shè)置或使用不依賴于區(qū)域的格式。