2015-09-24 10 views
0

Это может быть что-то похожее на другое, но мое понимание не очень велико, поэтому я пытаюсь понять, может ли кто-нибудь помочь мне понять. Я хочу изменить десятичное число числа, например, если число равно 0.5, я хочу, чтобы он преобразовал его в .50, аналогично, если это было 0.25, то .25 и т. Д., Я предполагаю, что это так просто, но я могу Кажется, я понимаю, как это сделать? Мой блок тестирования кода у меня ниже, и первый один проходит, но не другиеПреобразование десятичного числа C#

Обновлены Test Unit

[TestFixture] 
public class ProbabilityDisplayConverterTests 
{ 
    public ProbabilityDisplayConverter underTest = new ProbabilityDisplayConverter(); 

    [Test] 
    public void Convert_ConvertsWholeDecimal() 
    { 
     var value = (string)underTest.Convert(1, typeof(decimal), null, CultureInfo.CurrentCulture); 
     Assert.AreEqual("1", value); 
    } 

    [Test] 
    public void Convert_ConvertsHalfToDecimal() 
    { 
     var value = (string)underTest.Convert(0.5, typeof(decimal), null, CultureInfo.CurrentCulture); 
     Assert.AreEqual(".50", value); 
    } 

    [Test] 
    public void Convert_ConvertsDecimal() 
    { 
     var value = (string)underTest.Convert(0.25, typeof(decimal), null, CultureInfo.CurrentCulture); 
     Assert.AreEqual(".25", value); 
    } 

    [Test] 
    public void Convert_ConvertsWholeNumberDecimal() 
    { 
     var value = (string)underTest.Convert(0.3, typeof(decimal), null, CultureInfo.CurrentCulture); 
     Assert.AreEqual(".30", value); 
    } 
} 

EDIT

public class ProbabilityDisplayConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value = value.ToString("G", CultureInfo.InvariantCulture); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+6

Это не изменяющийся десятичное место, что меняется формат. –

+1

http://stackoverflow.com/questions/164926/c-sharp-how-do-i-round-a-decimal-value-to-2-decimal-places-for-output-on-a-pa –

+0

Да, тесты в порядке, и это мой вопрос, как изменить формат. –

ответ

0

Я не уверен, что я пропустил что-то в этом вопросе, но почему бы просто не использовать опцию формата метода ToString?

 (0.5m).ToString(".00"); 
     (0.15m).ToString(".00"); 

делает именно то, что ОП Потребность (конечно, вы получите свой локальный символ десятичной точки)

+0

Я получаю сообщение об ошибке «no overload for method» ToString «принимает один аргумент» :( –

+0

Это потому, что ваш первый параметр является «объектом» », сначала ему нужно распаковать с приведением к соответствующему типу. – PaulF

+0

Вы не можете использовать ToString, заданный с типом данных объекта, он должен быть числовым !!! –

Смежные вопросы