转换十进制数c#

时间:2015-09-24 14:18:26

标签: c# .net decimal

这可能与其他类似,但我的理解并不是很好,所以我试图看看是否有人可以帮助我理解。我想更改数字的小数位,例如,如果数字为0.5,我希望它将其转换为.50,同样如果它是0.25然后.25等,我猜这是如此简单,但我可以好像懂得怎么做?我的单元测试代码如下,第一个通过而不是其他通过

更新了单元测试

[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);
    }
}

修改

    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();
    }
}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我不确定我是否错过了这个问题,但为什么不简单地使用ToString方法的格式选项?

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

正是OP需要的(当然你得到你的本地小数点字符)