将字符串转换为十进制以始终具有2个小数位

时间:2016-04-14 09:35:16

标签: c#

我试图将字符串转换为小数,以便总是有2位小数。例如:

  • 25.88 - > 25.88
  • 25.50 - > 25.50
  • 25.00 - > 25.00

但是根据我的代码,我看到以下内容:

  • 25.88 - > 25.88
  • 25.50 - > 25.5
  • 25.00 - > 25

我的代码:

Decimal.Parse("25.50", CultureInfo.InvariantCulture);

OR

Decimal.Parse("25.00");

OR

Convert.ToDecimal("25.50");

总而言之,我得到了25.5。是否有可能不切断多余的零点?

2 个答案:

答案 0 :(得分:2)

Decimal有点奇怪,所以从技术上讲,你可以做一些(并且可能是)技巧:

  // This trick will do for Decimal (but not, say, Double) 
  // notice "+ 0.00M"
  Decimal result = Convert.ToDecimal("25.5", CultureInfo.InvariantCulture) + 0.00M; 

  // 25.50 
  Console.Write(result);

但更好的方法是将小数点后的Decimal格式化(代表)到2位数:

  Decimal d = Convert.ToDecimal("25.50", CultureInfo.InvariantCulture);

  // represent Decimal with 2 digits after decimal point
  Console.Write(d.ToString("F2"));

答案 1 :(得分:0)

我很惊讶你得到了这个问题,但如果你想解决它:

yourNumber.ToString("F2") 它打印出2个小数点,即使有更多或更少的小数点指针。

经过测试:

decimal d1 = decimal.Parse("25.50");
        decimal d2 = decimal.Parse("25.23");
        decimal d3 = decimal.Parse("25.000");
        decimal d4 = Decimal.Parse("25.00");
        Console.WriteLine(d1 + " " + d2 + " " + d3.ToString("F2") + " " + d4);
        Console.ReadLine();

输出:25.50 25.23 25.00 25.00