如何正确舍入和格式化小数?

时间:2010-11-23 17:32:19

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

  

可能重复:
  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

如何格式化我的小数,以便小数位数始终为4?

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

4 个答案:

答案 0 :(得分:13)

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);

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用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"

答案 3 :(得分:1)

试试这个:

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

如果没有要放置的数字,则以格式添加零会强制输出零。

要添加以编程方式驱动的零数的零,您可以执行以下操作:

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