带有符号的String.Format十进制,固定的小数位数,无小数点分隔符

Bor*_*ens 3 .net vb.net string.format decimal

String.Format是一种最干净,最易读的方法,具有以下条件的小数

  • 以符号开头(+或 - )
  • 固定数量的小数位数
  • 没有小数分隔符
  • 对齐
  • 用"0"预先填充

例如

  • 123,45将成为"+0012345"
  • -1123,45将成为"-0112345"

Jam*_*iec 6

您几乎肯定希望将自定义数字格式字符串传递给String.Format方法.

自定义格式字符串可以包含2个部分(第一个用于正面,第二个用于负格式),您可以为其提供文字+-.所以要格式化为7个字符的零填充,这类似于:

String.Format("{0:'+'0000000;'-'0000000}",yourValue);
Run Code Online (Sandbox Code Playgroud)

但是,这将截断小数,因此您的输入会给出

123.45 --> +0000123
-1123.45 --> -0001123
Run Code Online (Sandbox Code Playgroud)

一个简单的解决方案是将数字乘以100(将小数位数固定为2),然后再将其传递给上面的数字

实例:http://rextester.com/SZR8690(C# - 对不起,但只有演示的想法)

然后可以将其包装到扩展方法中:

<Extension()> 
Public Function ToFixedFormat(ByVal value As Decimal, ByVal numFractionalDigits As Integer)
    Return String.Format("{0:'+'0000000;'-'0000000}",value * Math.Pow(10,numFractionalDigits))
End Function
Run Code Online (Sandbox Code Playgroud)

实例:http://rextester.com/LSAAA60214(VB.NET)