пользовательский формат для десятичной с # - PullRequest
3 голосов
/ 12 января 2012

Я пытаюсь отформатировать десятичное значение с десятичными знаками в произвольный формат без запятых или точек, проверяя http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx, но не могу найти нужный мне формат

Мне нужно преобразовать десятичное значение, например, 3.1416, в 314 или даже лучше 0000000314, какая-нибудь подсказка?

Ответы [ 4 ]

4 голосов
/ 12 января 2012

Для масштабирования на 100 и отображения до 9 ведущих нулей используйте

String.Format("{0:0000000000}", (value * 100));
1 голос
/ 12 января 2012

Сделай простой метод

   public static string FormatNumberMultipliedByOneHundred(string inputString)
   {
       inputString = string.Format("{0:########}", (inputString * 100));
       return inputString;
   }
1 голос
/ 12 января 2012

только для отображения

String.Format("{0:##########}", (value * 100))
0 голосов
/ 12 января 2012

Я думаю, что лучший способ решить эту проблему - использовать ValueConverters.С помощью нескольких простых шагов вы можете написать ValueConverter, который принимает произвольный объект в качестве входных данных, применяет некоторое преобразование и выводит результат.

Эти ValueConverter очень эффективны, и в случае, если вы пишете один преобразователь для одного конкретного преобразования (позаботьтесьвысокой сплоченности) они очень удобны и многократно используются

Что вам нужно, это интерфейс IValueConverter, который вы должны реализовать в своем классе Converter.Преобразование всегда преобразует некоторое A в некоторое B. Таким образом, интерфейс содержит ровно два метода, которые отвечают за преобразование в одном направлении и за обратное преобразование (обратное направление)

Хорошей практикой является написание общего базового класса, которыйвсе ваши конвертеры могут наследовать:

public class ValueConverterBase : IValueConverter {

public virtual object Convert (object value, Type convertTargetType, object convertParameter, System.Globalization.CultureInfo convertCulture) {

        return value;
    }

    public virtual object ConvertBack (object value, Type convertBackTargetType, object convertBackParameter, System.Globalization.CultureInfo convertBackCulture) {

        return value;
    }

}

Затем вы можете написать свои классы конвертера, которые фактически реализуют код конвертации:

public class NumberConverter : ValueConverterBase {

    public override object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {

        // code for converting
    }

    public override object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {

        // code for converting back
    }

}

Вы можете найти множество документации и учебных пособий по ValueConverter наИнтернет.

Надеюсь, это поможет:)

...