簡體   English   中英

如何使用前導零和沒有分隔符格式化十進制?

[英]How to format decimal with leading zeros and without a separator?

我要求將十進制值格式化為8個位置,其中最后兩位數字保留為十進制值。

格式應為:00000000(其中最后2個零用於十進制值)。

例:

十進制值:193.45

結果應為:0000019345

十進制值:245

結果應為:0000024500

我知道我可以使用string.format("{format here}", value).ToString("format here")但不知道要使用什么字符串格式。

查看自定義數字格式字符串的MSDN文檔。

可能可以定義自定義NumberFormatInfo以此格式打印字符串。 但是,更容易實現此目的的方法是以下任一選項:

(value * 100).ToString("00000000");

string.Format("{0:00000000}", value * 100);

試試這個:

decimalValue.ToString("00000000.00").Replace(".", "");

我可能只是做string操作。 我敢肯定一個格式標志,但似乎更容易。

string ret = (decimalValue * 100).ToString();

return ret.PadLeft(8, '0');

只是為了好玩,玩十進制類型我發現通過訪問它的二進制表示我可以更改比例然后格式化為您的要求:

public class Program
{
    static void Main()
    {
        decimal[] ds = { 193.45m, 245.00m };
        foreach (decimal d in ds)
        {
            Console.WriteLine(Format8(d));
        }
    }

    static string Format8(decimal d)
    {
        int[] parts = decimal.GetBits(d);
        bool sign = (parts[3] & 0x80000000) != 0;

        byte scale = (byte)((parts[3] >> 16) & 0x7F);
        Debug.Assert(scale == 2);
        scale = 0; // alter scale to remove the point

        return new decimal(parts[0], parts[1], parts[2], sign, scale)
            .ToString("00000000");
    }
}

需要注意的是,如果您有任何沒有兩個小數點的數據,這種方法就會失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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