小数点/货币字段的小数点后两位

本文关键字:小数点 两位 货币 字段 | 更新日期: 2023-09-27 17:57:27

我的数据库中有一个带有money字段的表。我已经创建了实体,并为那个货币字段创建了十进制属性。当该字段的值显示在My MVC3视图中时,小数后有四个零0000,如下所示:5489.0000。我只想显示两个00或小数点。我该如何修复它。为什么它显示小数点后四位,即使我将属性声明为十进制。

请提出建议。

小数点/货币字段的小数点后两位

SQL Server money数据类型内部为64位整数,隐含小数位数为4位。引用Books Online的话,它精确到"一个货币单位的一万分之一"。它大致相当于一个decimal(19,4)

使用4而不是2的比例是为了保持算术结果的精度。您的普通货币价值的小数位数为2(例如3.27美元)。两个小数位数为小数点后2位的数字的乘积或除法得出精确到小数点后4位的结果:9.23除以3.27得出2.82262996941896(近似)。您可以将结果精确到所需的(小数位数)。然而,由于原始值仅精确到小数点后2位,因此结果仅精确到4位(2.8226)。该测量精确到指定最小单位的1/2以内(+/-0.005)

但我离题了。

由于SQL Server money值的隐含小数位数是4,ADO.Net会将该值转换为小数位数为4的System.Decimal。由于System.Decimal跟踪小数位数,当你将其转换为字符串时,你会得到4位小数。

要获得更少,您可以

  • 在转换前使用适当的Decimal.Round()过载进行四舍五入,或者
  • 根据需要对其进行格式化(例如(3.27M).ToString("0.00") ;

希望这能有所帮助。

此程序:

namespace Sandbox
{
  using System ;
  class Program
  {
    static void Main( string[] args )
    {
      decimal pi     = (decimal) Math.PI ;
      string  piText = pi.ToString("0.00");
      Console.WriteLine("PI to 2 decimal places is {0} one way, and {1:0.00} another" , piText , pi ) ;
      return;
    }
  }
}

产生你所期望的:

PI to 2 decimal places is 3.14 one way, and 3.14 another

干杯,

N。

您必须格式化字符串。

如果你想显示它的钱,你可以做一件事:

static void Main () 
{
    decimal x = 0.999m;
    decimal y = 9999999999999999999999999999m;
    Console.WriteLine("My amount = {0:C}", x);
    Console.WriteLine("Your amount = {0:C}", y);
}

}

输出:输出

我的金额=1.00美元
您的金额=99999999999999999999美元

{0:C}是货币格式

希望这能有所帮助!

以下是您需要了解的关于格式化字符串的所有信息。

http://blog.stevex.net/string-formatting-in-csharp/

我使用了这个,它起了作用:

YourDecField.ToString("N")