簡體   English   中英

用四位數字格式化小數,除非這些數字為零

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM