【问题标题】:How to round and format a decimal correctly? [duplicate]如何正确舍入和格式化小数? [复制]
【发布时间】:2011-05-14 14:58:44
【问题描述】:

可能重复:
c# - How do I round a decimal value to 2 decimal places (for output on a page)

我试图让我的小数点显示为四位小数。数据库将我的数字四舍五入到小数点后 4 位,但它返回带有尾随 0 的数字(由于该字段的小数精度),因此类似于 9.45670000。然后,当我这样做时:

string.Format("{0:#,#.####}", decimalValue);

我在页面上得到的输出是 9.4567,这是我想要的。

但是,如果从DB返回的数字是9.45600000,那么格式化后的输出是9.456

但我需要显示的是 9.4560

如何格式化我的小数,使小数位数始终为四位?

更新:另外,如果我想动态确定小数位数,是否可以使用变量(而不是 .0000)?

【问题讨论】:

    标签: c# .net asp.net sql-server vb.net


    【解决方案1】:
    string.Format("{0:N4}",decimalValue);
    

    Standard Numeric Format Strings

    Custom Numeric Format Strings

    要动态设置精度,您可以执行以下操作:

    double value = 9.4560000;
    int precision = 4;
    string format = String.Format("{{0:N{0}}}",precision);
    string valuestring = String.Format(format, value);
    

    【讨论】:

    • 根据下面的 cmets,逗号对您来说也很重要。此格式字符串正确添加它们。此外,我编辑了我的回复,以提供标准数字格式字符串的链接以供将来参考。
    【解决方案2】:
    string.Format({0:#,#0.0000}, decimalValue); 
    

    【讨论】:

      【解决方案3】:

      使用String.Format -

          decimal d =123.47
          string specifier="{0:0,0.0000}"; // You need to get specifier dynamically here..
          String.Format(specifier, d);      // "123.4700"
      

      【讨论】:

      • 我需要逗号来表示大数...
      • 如果我想动态确定小数位数,是否可以使用变量(而不是 .0000)?
      • @Prabhu 我已经编辑了我的答案,以提供如何执行此操作的示例
      • 是的..检查我的回复和这个 - msdn.microsoft.com/en-us/library/fzeeb5cd.aspx
      【解决方案4】:

      试试这个:

      string.Format("{0:#,###.0000}", 9.45600000);
      

      在格式中添加零会强制在没有数字的情况下输出零。

      要添加带有以编程方式驱动的零数的零,您可以这样做:

        int x = 5;
        string fmt = "{0:#,###." + new string('0', x) + "}";
        string.Format(fmt, 9.456000000);
      

      【讨论】:

      • 如果我想动态确定小数位数,是否可以使用变量(而不是 .0000)?
      • @theChrisKent 的回答比我的要好。我忘记了精度说明符。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      相关资源
      最近更新 更多