Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C#表示更多小数点的千位分隔符_C#_Vb.net_Blueprism - Fatal编程技术网

用C#表示更多小数点的千位分隔符

用C#表示更多小数点的千位分隔符,c#,vb.net,blueprism,C#,Vb.net,Blueprism,我需要在C#代码或VB中使用千位分隔符,我将在BluePrism代码阶段使用这些分隔符。堆栈溢出中的一个问题在某种程度上为我提供了解决方案,但并不完整 我在小数点后有两个以上的数字,我需要这个数字有千位分隔符并保留所有的十进制值 Out=String.Format(“{0:N}%”,In) 如果In为-137855027.5123456,则Out值为-137855027.51%,但我需要小数点后的所有值。如果您有这样的数字: double number = -137855027.5123456;

我需要在C#代码或VB中使用千位分隔符,我将在BluePrism代码阶段使用这些分隔符。堆栈溢出中的一个问题在某种程度上为我提供了解决方案,但并不完整

我在小数点后有两个以上的数字,我需要这个数字有千位分隔符并保留所有的十进制值

Out=String.Format(“{0:N}%”,In)


如果In为-137855027.5123456,则Out值为-137855027.51%,但我需要小数点后的所有值。

如果您有这样的数字:

double number = -137855027.5123456;
var output = string.Format("{0:N10}", number).TrimEnd('0') + "%";
您可以使用
{0:NXX}
其中
XX
是小数点后所需的小数位数。例如:

var output = string.Format("{0:N6}%", number);    // -137,855,027.512346%
您应该选择小数点后所需的最大位数。请注意,如果没有足够的数字,其余数字将用零填充(例如123.1230000)。如果你想避免这种情况,你可以这样做:

double number = -137855027.5123456;
var output = string.Format("{0:N10}", number).TrimEnd('0') + "%";
受此启发的另一个解决方案是:

var output = number.ToString("#,#.#############################") + "%";
全部在线试用:


您可以根据输入号码构建自己的模式:

decimalmynumber=-137855027.5123456m;
//两位小数。。
字符串模式=“#,##0.”+“”.PadLeft(2,'0');
Console.WriteLine(“模式:+Pattern”);
Console.WriteLine(myNumber.ToString(模式));
Console.WriteLine();
//20位小数。。
pattern=“#,##0.”+“”.PadLeft(20,'0');
Console.WriteLine(“模式:+Pattern”);
Console.WriteLine(myNumber.ToString(模式));
Console.WriteLine();
//计算需要多少小数。。
int decimals=BitConverter.GetBytes(decimal.GetBits(myNumber)[3])[2];
pattern=“#,###0.”+“”.PadLeft(小数,“0”);
Console.WriteLine(“模式:+Pattern”);
Console.WriteLine(myNumber.ToString(模式));
Console.WriteLine();
//如果您只想设置小数,此版本将更容易:
WriteLine(myNumber.ToString(“{0:N”+小数+”}”);

我相信“F”说明符包括组分隔符,而“N”说明符没有。请检查。
Out=string.Format({0:N10}),In.TrimEnd('0')+“%”工作正常,如果这可以在VB@monu
String.Format(“{0:N10}”,In).TrimEnd(“0”c)+“%”
。不过,您需要在
中使用不同的变量名,而不是
。请注意,
In
Out
都不是VB或C#或类似于:
int decimals=(decimal.GetBits(number)[3]^int.MinValue)>>16的变量名的好选择;string formatted=string.Format($“{0:N{decimals}}}%”,数字)。更具可读性:)@AhmedAbdelhameed我能够在Blue Prism中使用C#代码,但当我尝试VB时,它抛出了Blue Prism期望的错误表达式—无论在线操作如何正常。您知道应该导入哪个名称空间吗?我正在使用Microsoft.VisualBasic,但没有帮助。