Самый эффективный способ преобразовать строку в 2 десятичных знака в C # - PullRequest
4 голосов
/ 02 апреля 2009

У меня есть string, которому требуется десятичное место для точности 2.

3000 => 30.00
 300 =>  3.00
  30 =>   .30

Ответы [ 3 ]

14 голосов
/ 02 апреля 2009

С учетом ввода строки преобразовать в целое число, разделить на 100.0 и использовать String.Format (), чтобы отобразить два десятичных знака.

String.Format("{0,0:N2}", Int32.Parse(input) / 100.0)

Умнее и без преобразования назад и вперед - добавьте строку с нулями как минимум к двум символам, а затем вставьте точку на два символа справа.

String paddedInput = input.PadLeft(2, '0')

padedInput.Insert(paddedInput.Length - 2, ".")

Пад на длину три, чтобы получить ведущий ноль. Пэд с точностью + 1 в расширении metheod для получения начального нуля.

И как метод расширения, просто для ударов.

public static class StringExtension
{
  public static String InsertDecimal(this String @this, Int32 precision)
  {
    String padded = @this.PadLeft(precision, '0');
    return padded.Insert(padded.Length - precision, ".");
  }
}

// Usage
"3000".InsertDecimal(2);

Примечание: PadLeft () является правильным.

PadLeft()   '3' => '03' => '.03'
PadRight()  '3' => '30' => '.30'
0 голосов
/ 30 апреля 2009

вот очень простой способ и хорошо работать .. urValue.Tostring ( "F2")

скажем .. int / double / decimal urValue = 100; urValue.Tostring ( "F2"); результат будет "100,00"

так что F2 - это сколько десятичных разрядов вы хотите если вы хотите 4 место, то используйте F4

0 голосов
/ 02 апреля 2009

Используйте tryParse, чтобы избежать исключений.

int val;

if (int.Parse(input, out val)) {
    String.Format("{0,0:N2}", val / 100.0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...