什么是最干净、最易读的方法来使用String.Format格式化一个十进制数,满足以下条件:
- 以符号(+或-)开头
- 小数位数固定
- 没有小数点
- 右对齐
- 前缀填充“0”
- 123.45将变成“+0012345”
- -1123.45将变成“-0112345”
+
或-
。因此,要使用7个字符进行零填充格式化,可以这样做:String.Format("{0:'+'0000000;'-'0000000}",yourValue);
123.45 --> +0000123
-1123.45 --> -0001123
一个简单的解决方案是在传递给上面的方法之前将您的数字乘以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
实时示例: http://rextester.com/LSAAA60214 (VB.NET)
Dim value = -1123.45
Dim formatted = value.ToString(
"+00000.00;-00000.00",
System.Globalization.CultureInfo.InvariantCulture)
formatted = formatted.Replace(".", "")
正如您所看到的,我不知道如何指定没有小数分隔符。
String.Format
无法做到的唯一部分(至少没有小数点)。因此,你有两个选择:替换小数点(如@Tim的答案)或乘以10的n次方(如我的答案)。 - Jamiec