【问题标题】:How to format a value with a single decimal place using C#如何使用 C# 格式化一个小数点后的值
【发布时间】:2016-07-29 12:14:47
【问题描述】:

我需要将一些值转换为十进制。我已经完成了以下操作:

    Double calculateinputPower="somegivenvalue";
       String valuePower="somevalue";
       Double calculatePower = Double.Parse(valuePower);
       calculatePower = calculatePower - calculateinputPower + calculateErp * 1;
       calculatePower = Double.Parse(String.Format("{0:0.0}", calculatePower));
       valuePower = System.Convert.ToString(calculatePower);
       ERP.Text = valuePower;

如果我的输出值是这样的 例如:66.2356 -> 66.2,32.568 -> 32.5,22.35264 ->22.3 我得到了我需要的格式,但如果输出值像 22,33,11,66,55 这样的东西然后我想将该值转换为 22->22.0 33->33.0 11->11.0 66->66.0 我怎样才能在 C# 中得到这个。

我使用 myVal.ToString("F"); 然后我得到 0.00 如果我使用ToString("N2");,那么我将获得 1,000.00 但我不想要货币格式或 0.00 格式 如果值不是十进制的,我真正需要的是单个 .0 。

【问题讨论】:

    标签: c# string format decimal


    【解决方案1】:

    只需使用.ToString("0.0")(注意这里使用舍入,所以22.26 -> 22.3

         double i = 22.23;
         double j = 45;
    
         string si = i.ToString("0.0"); //22.2 
         string sj = j.ToString("0.0"); //45.0
    

    【讨论】:

      【解决方案2】:

      这样试试:

      valuePower = calculatePower.ToString("F1");
      

      要了解更多信息,请关注此link

      【讨论】:

        【解决方案3】:

        您需要查看documentation for the format strings you're using

        您已尝试F,它表示您没有指定 “默认精度说明符:由 NumberFormatInfo.NumberDecimalDigits 定义。” 的精度,在您的情况下为 2。

        您尝试过N2,它表示 2 是 “精度说明符:所需的小数位数。”

        由于您只需要一个小数位,请使用 F1N1,具体取决于您的格式要求。

        var number1 = 66.2356d;
        var number2 = 66d;
        
        var string1 = number1.ToString("N1"); // 66.2
        var string2 = number2.ToString("N1"); // 66.0
        

        this fiddle

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-23
          • 2011-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多