![](/img/trans.png)
[英]Decimal parse when the thousand separator and decimal separator are the same 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.