2014-12-16 5 views
2

(в первую очередь: это не является дубликат Format numbers with floating points and sign in textbox in C#)избежать лишних нулей форматирования чисел в C#

Я использую раствор из dodald (https://stackoverflow.com/a/27510646/3179989) для форматирования чисел с плавающей точкой и знаком, чтобы сделать их выровнены на основе плавающей точкой:

textbox1.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number1); 
textbox2.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number2); 
textbox3.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number3); 
textbox4.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number4); 
textbox5.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number5); 

Он отлично работает для чисел, как -1.23456 (результаты в «- 1.23456»), однако, если число 1,2, то это изменит его на «+ 1,20000».

Вопросы: В любом случае, чтобы избежать лишних нулей? Как я могу добавить пробел в конце текста, используя параметры форматирования и не используя (текст + "")?

Заранее спасибо

EDIT: чтобы уточнить это вот то, что я ищу:

-123.123456 
+ 1.123456 
- 0.123456 
- 0.123 
+ 1.1 
- 12.123456 

У меня есть несколько текстовых полей, которые вертикально. Я хочу, чтобы номера отображались так, как показано выше, где положение плавающей точки всегда фиксировано и вертикально выровнено. Решение, предоставленное dodald (https://stackoverflow.com/a/27510646/3179989), работает только для числа с пятью десятичными числами, такими как -1.23456 (результат «1.23456»), однако если число равно 1,2, то его решение изменит его на «+ 1.20000». Я хотел бы удалить добавленные нули в строку.

+2

Не совсем уверен, о «Как я могу добавить пробел в конце текста, используя параметры форматирования ", но вместо' 0' используйте '#', – Habib

+0

Я согласен, его непонятно, что вы хотите сделать. Возможно, вы могли бы добавить пример вывода. – paqogomez

ответ

1

Вы можете использовать этот код, используя строку строитель, и вы увидите, что все нули на правой стороне десятичной точки удаляемого и это было показано выше (1555454545445.20000000000000000) и после (1555454545445,2) в консоли:

static void Main(string[] args) 
    { 
     string input = "1555454545445.20000000000000000"; 
     StringBuilder sb = new StringBuilder(input); 
     for (int i = 0; i < input.Length-2; i++) 
     { 
      if (input[i] == '.') 
      { 
       if (input[input.Length - 1] == '0') 
       { 
        for (int x = 0; x < input.Length - i; i++) 
        { 
         if (sb[sb.Length - 1] == '0') 
         { 
          sb = sb.Remove((sb.Length - 1), 1); 
         } 
        } 
       } 
      } 
     } 
     Console.WriteLine(input); 
     Console.WriteLine(sb.ToString()); 
    } 
0

Вы также можете использовать этот код для удаления каких-либо дополнительных нулей на справа от десятичной точки, используя регулярное выражение:

class MainProgram 
{ 
    public static void Main(string[] args) 
    { 
     decimal DNumber = 1223456.45600000M; 
     Console.WriteLine("Original Decimal Number = {0}, Decimal Number Without Zeros = {1}", DNumber, DNumber.ToString("#.##############")); 
     Console.Read(); 
    } 
} 
Смежные вопросы