Dot*_*row 14 c# entity-framework-4 asp.net-mvc-3
我的数据库中有一个带有money field的表.我已经为该货币领域创建了实体并创建了小数属性.当该字段的值显示在我的MVC3视图上时,它在小数点后有四个零0000,如下所示:5489.0000.我想只显示两个00或小数位.我该如何解决呢?为什么它显示四位小数,即使我将属性声明为十进制.
请建议.
Nic*_*rey 19
SQL Server money数据类型内部是一个64位整数,隐含的比例为4位小数.引用联机丛书,它是准确的"至万亿货币单位".它是,粗略等同于a decimal(19,4).
比例为4而不是2的原因是为了保持算术结果的精确性.您的普通货币值的等级为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将该值转换为System.Decimal,其比例为4.并且由于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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
产生你期望的东西:
PI to 2 decimal places is 3.14 one way, and 3.14 another
Run Code Online (Sandbox Code Playgroud)
干杯,
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);
}
Run Code Online (Sandbox Code Playgroud)
}
输出:输出
我的金额= $ 1.00
您的金额= $ 9,999,999,999,999,999,999,999,999,999.00
{0:C}是货币格式
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
26462 次 |
| 最近记录: |