簡體   English   中英

C#中的千位分隔符可獲取更多的小數點

[英]Thousand separator in C# for more number of decimal points

我需要在BluePrism代碼階段使用的C#代碼或VB中使用千位分隔符。 堆棧溢出中的問題之一在某種程度上給了我解決方案,但並不完整。

我在小數點后有兩位以上的數字,我需要該數字具有千位分隔符並保留所有十進制值。

Out = String.Format("{0:N}%", In);

如果In是-137855027.5123456 Out的值是-137,855,027.51%,但是我需要小數點后的所有值。

如果您有這樣的數字:

double number = -137855027.5123456;

您可以使用{0:NXX} ,其中XX是小數點后所需的小數位數。 例如:

var output = string.Format("{0:N6}%", number);    // -137,855,027.512346%

您應該選擇小數點后所需的最大位數。 請注意,如果沒有足夠的數字,其余數字將填充零(例如123.1230000)。 如果要避免這種情況,可以執行以下操作:

var output = string.Format("{0:N10}", number).TrimEnd('0') + "%";

受此答案啟發的另一個解決方案是:

var output = number.ToString("#,#.#############################") + "%";

在線嘗試所有功能:

您可以根據輸入數字構建自己的模式:

decimal myNumber = -137855027.5123456m;

// two decimals..
string pattern = "#,##0." + "".PadLeft(2, '0');
Console.WriteLine("Pattern: " + pattern);
Console.WriteLine(myNumber.ToString(pattern));
Console.WriteLine();

// 20 decimals..
pattern = "#,##0." + "".PadLeft(20, '0');
Console.WriteLine("Pattern: " + pattern);
Console.WriteLine(myNumber.ToString(pattern));
Console.WriteLine();

// Calculate how much decimals are needed..
int decimals = BitConverter.GetBytes(decimal.GetBits(myNumber)[3])[2];
pattern = "#,##0." + "".PadLeft(decimals, '0');
Console.WriteLine("Pattern: " + pattern);
Console.WriteLine(myNumber.ToString(pattern));
Console.WriteLine();

// If you only want to set the decimals this version would be easier:
Console.WriteLine(myNumber.ToString("{0:N" + decimals + "}"));

暫無
暫無

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

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