在C#中将0.5转换为0.50

时间:2010-06-08 07:06:50

标签: c#

我有一个持有0.5的字符串。我必须转换为0.50。

我尝试了以下方法,但没有任何效果。请帮助

hdnSliderValue.Value为0.5,我希望workFlow.QualityThresholdScore为0.50

workFlow.QualityThresholdScore = Convert.ToDecimal(String.format("{0:d}",hdnSliderValue.Value));

workFlow.QualityThresholdScore = Convert.ToDecimal(String.format("{0:0.00}",hdnSliderValue.Value));

是否有任何内置函数或我必须进行字符串处理才能完成此任务。

5 个答案:

答案 0 :(得分:7)

最简单的方法可能是 来使用字符串转换:

string text = "0.5";
decimal parsed = decimal.Parse(text);
string reformatted = parsed.ToString("0.00");
decimal reparsed = decimal.Parse(reformatted);

Console.WriteLine(reparsed); // Prints 0.50

虽然这很丑陋:(

你肯定可以通过首先解析原始字符串,然后搞乱小数的内部格式来实现它,但这会非常困难。

编辑:好的,如果它是一个i18n问题,这里有一个控制台应用程序应该肯定打印出0.50:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo invariant = CultureInfo.InvariantCulture;
        string text = "0.5";
        decimal parsed = decimal.Parse(text, invariant);
        string reformatted = parsed.ToString("0.00", invariant);
        decimal reparsed = decimal.Parse(reformatted, invariant);

        Console.WriteLine(reparsed.ToString(invariant)); // Prints 0.50
    }
}

答案 1 :(得分:1)

这是ToString("N2")

编辑:添加测试代码以显示其工作原理

decimal a = 0.5m;
Console.WriteLine(a);
// prints out 0.5
string s = a.ToString("N2");
decimal b = Convert.ToDecimal(s);
// prints out 0.50
Console.WriteLine(b);

答案 2 :(得分:0)

在数字中,0.5 == 0.50。零不会添加任何信息,因此如果QualityThresholdScore属于数字类型,无论如何都会得到0.5。如果是字符串,请使用decimal.ToString("0.00");

答案 3 :(得分:0)

你试过吗? workFlow.QualityThresholdScore = Convert.ToDecimal(hdnSliderValue.Value.ToString(“N2”));

答案 4 :(得分:0)

Stringy版本,因为没有人建议它。

      string pointFive = "0.5";
      int decimals = (pointFive.Length-1) - pointFive.IndexOf('.');
      if (decimals >= pointFive.Length)
        pointFive += ".00";
      else if (decimals == 1)
        pointFive += "0";
      else if (decimals == 0)
        pointFive += "00";

甚至可能比数字转换和格式化功能更快。