转换十进制数c#
Converting decimal number c#
这可能与其他类似,但我的理解不是很好,所以我想看看是否有人可以帮助我理解。我想更改数字的小数位,例如,如果数字为 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();
}
}
试试这个
number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
参考:https://msdn.microsoft.com/ru-ru/library/dwhawy9k(v=vs.110).aspx
我不确定我是否遗漏了这个问题中的某些内容,但为什么不简单地使用 ToString 方法的格式选项呢?
(0.5m).ToString(".00");
(0.15m).ToString(".00");
完全满足 OP 的需要(当然您会得到本地小数点字符)
这可能与其他类似,但我的理解不是很好,所以我想看看是否有人可以帮助我理解。我想更改数字的小数位,例如,如果数字为 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();
}
}
试试这个
number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
参考:https://msdn.microsoft.com/ru-ru/library/dwhawy9k(v=vs.110).aspx
我不确定我是否遗漏了这个问题中的某些内容,但为什么不简单地使用 ToString 方法的格式选项呢?
(0.5m).ToString(".00");
(0.15m).ToString(".00");
完全满足 OP 的需要(当然您会得到本地小数点字符)