gpt4 book ai didi

c# - 小数点/货币字段的两位小数

转载 作者:可可西里 更新时间:2023-11-01 07:52:24 27 4
gpt4 key购买 nike

我的数据库中有一个包含货币字段的表。我已经为该货币字段创建了实体并创建了 decimal 属性。当该字段的值显示在我的 MVC3 View 上时,它在小数点后有四个零 0000,如下所示:5489.0000。我只想显示两个 00 或小数位。我该如何解决它。为什么即使我将属性声明为小数,它仍显示四位小数。

请提出建议。

最佳答案

SQL Server money 数据类型在内部是一个 64 位整数,隐含小数点后 4 位。引用联机丛书的话,它精确到“万分之一的货币单位”。它大致相当于 decimal(19,4)

小数位数为 4 而不是 2 的原因是为了保持算术结果的精度。您的普通货币值(value)的标度为 2(例如 $3.27) 两个标度为小数点后 2 位的数字相乘或相除得到的结果精确到小数点后 4 位:9.23 除以 3.27 得到 2.82262996941896(大约)的结果。您可以将结果带到您想要的任何精度(小数位数)。但是,结果仅精确到小数点后 4 位 (2.8226),因为原始值仅精确到小数点后 2 位。该测量值精确到指定最小单位的 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.

关于c# - 小数点/货币字段的两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com