String.Format是一种最干净,最易读的方法,具有以下标准的小数
例如
答案 0 :(得分:6)
您几乎肯定希望Custom numeric format string传递给String.Format方法。
自定义格式字符串可以包含2个部分(第一个表示正面,第二个表示负面格式),您可以为其提供文字+
或-
。所以要格式化为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)
答案 1 :(得分:3)
也许有更好的东西,因为它看起来有点笨拙,但它确实有用。
我指定正面和负面格式来强制执行正数和固定大小字符串的加号。然后我使用InvariantCulture
强制点作为小数分隔符(我也可以使用其他文化)。最后一步是删除该点。
Dim value = -1123.45
Dim formatted = value.ToString(
"+00000.00;-00000.00",
System.Globalization.CultureInfo.InvariantCulture)
formatted = formatted.Replace(".", "")
如您所见,我不知道如何指定否小数点分隔符。