Вы почти наверняка хотите, чтобы Custom numeric format string перешел на метод String.Format.
Строка настраиваемого формата может содержать 2 раздела (сначала для положительных, второй для отрицательного форматирования), для которых вы можете предоставить литерал +
или -
. Так форматировать с 7 символов нулями это что-то вроде:
String.Format("{0:'+'0000000;'-'0000000}",yourValue);
Однако это усечение десятичную, и поэтому ваш вклад дает
123.45 --> +000
-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)
Не волнуйтесь, я свободно в C# тоже;) Умножая: простой и гениальной :) –
@BorisCallens - я думал, что C# будет в порядке, но мы всегда должны стремиться предоставить примеры кода на выбранном вами языке. Фиксированное количество цифр было единственной частью 'String.Format' can not do (не в любом случае без разделителя с десятичной запятой). Таким образом, ваши 2 варианта заменяют десятичное место (в соответствии с ответом Тима) или умножаются на n-ю степень 10 (как за мой ответ). – Jamiec