![](/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.