[英]Format a Decimal with four digits, except when those digits are zeroes
我們有一個特定的格式問題,我們希望以最有效的方式解決。
如果沒有小數,我們必須將小數點格式設置為小數點后的四位數,因為在這種情況下,小數點應設置為小數點后的兩位數
我將舉幾個例子來說明:
1.234應打印為1.234(所有數字),而1.000應打印為1.00(限制為兩位數),而1.500應打印為1.50(限制為兩位數)。
換句話說:我們要刪除小數點后的所有不必要的零,但請確保在逗號后始終剩余兩位數字。
我猜沒有簡單的方法可以做到這一點。 如果是這樣,我想我可以使用.ToString()
函數將其轉換為字符串並解析小數點后的所有內容? 還是有人有更有效的想法?
使用以下格式說明符調用decimal.ToString()
方法,應為您提供2到4 decimal.ToString()
的輸出:
decimal d = 1.234m;
string output = d.ToString("0.00##");
有關數字格式說明符的更多信息,請參考MSDN。
標准數字格式字符串: https : //msdn.microsoft.com/zh-cn/library/0b22a4x2(v= vs.110) .aspx
自定義數字格式字符串: https : //docs.microsoft.com/zh-cn/dotnet/standard/base-types/custom-numeric-format-strings
那這個呢 ?
string SetDecimals(decimal val)
{
var decimalStr = val.ToString().Split(new string[] { System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator }, StringSplitOptions.None)[1];
if (decimalStr.Length == 4 && !decimalStr.EndsWith("00"))
return string.Format("{0:N4}", val);
else if(decimalStr.Length == 3 && !decimalStr.EndsWith("0"))
return string.Format("{0:N3}", val);
else
return string.Format("{0:N2}", val);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.