【问题标题】:Whats the best way to format this number?格式化此数字的最佳方法是什么?
【发布时间】:2011-09-02 13:25:37
【问题描述】:

我有一个double,我想使用以下规则对其进行格式化:

  1. 如果没有小数位,则只显示数字(参见下面的 100 示例)
  2. 如果有任何小数位显示 2 个小数位

所以,举几个例子:

100 --> 100  
99.958443534 --> 99.96  
99.1 -> 99.10  

【问题讨论】:

    标签: c# number-formatting


    【解决方案1】:

    你可以检查它是否是一个整数,使用基于它的格式类型:

    string res = string.Format(((number % 1) == 0) ? "{0:0}" : "{0:0.00}", number);
    

    【讨论】:

      【解决方案2】:

      怎么样:

      var a = 100;
      var b = 99.95844354;
      
      var aAnswer = a.ToString("0.##"); //aAnswer is "100"
      var bAnswer = b.ToString("0.##"); //bAnswer is "99.96"
      

      【讨论】:

      • 如果总是有两位小数,这将起作用。如果 OP 有 1.2,那么我认为他们期望结果为 1.20。这将导致 1.2
      【解决方案3】:

      你可以使用:

      decimal a = 99.949999999M;
      
      Math.Round(a, 2);  // Returns 99.95
      

      【讨论】:

      • 他希望 28 返回 28,而不是 28.00
      • @Neil Knight - 这不是我想要的。如前所述,如果数字中没有小数点,我不想显示“.00”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多