哪个数据库 金额类型代表金额

SQL server和C#使用什么类型来记录金额 - 荣耀轩辕 - 博客园
今天的一个小讨论,关于SQL server和C#使用什么类型来记录金额。
SQL server里的金额表示
(1)Money类型
SQL Server里使用Money和smallmoney类型来表示货币类型,Money是8字节的,smallmoney是4字节的。
如果一个对象被定义为&money,则它最多可以包含&19&位数字,其中小数点后可以有&4&位数字。该对象使用&8&个字节存储数据。因此,money&数据类型的精度是&19,小数位数是&4,长度是&8。
-922,337,203,685,477.5808&到&922,337,203,685,477.5807
Smallmoney
214,748.3648&到&214,748.3647
money&和&smallmoney&限制为小数点后有&4&位。如果需要小数点后有更多位,请使用&decimal&数据类型。
money&或&smallmoney&常量中不允许使用逗号分隔符。只能在显式转换为&money&或&smallmoney&的字符串中指定逗号分隔符。
USE&tempdb;
CREATE&TABLE&Test&(num&INT&PRIMARY&KEY,&summary&MONEY);
SET&NOCOUNT&ON;
--&插入数据到临时表
INSERT&INTO&Test&VALUES&(1,&$123.45);
INSERT&INTO&Test&VALUES&(2,&$);
INSERT&INTO&Test&VALUES&(3,&CAST('$444,123.45'&AS&MONEY)&);
--&插入错误示例,分隔符是字符串类型
INSERT&INTO&TestMoney&VALUES&(3,&$555,123.45);
SET&NOCOUNT&OFF;
SELECT&*&FROM&Test;
--返回错误信息
--Msg 213, Level 16, State 1, Line 3
--列名或所提供值的数目与表定义不匹配
(2)Decimal类型
Decimal是带固定精度和小数位数的数值数据类型
decimal[ (p[ , s] )]&和&numeric[ (p[ , s] )]
固定精度和小数位数。使用最大精度时,有效值从&- 10^38 +1&到&10^38 - 1。decimal&的&ISO&同义词为&dec&和&dec(p, s)。numeric&在功能上等价于&decimal。
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从&1&到最大精度&38&之间的值。默认精度为&18。
s&(小数位数)
小数点右边可以存储的十进制数字的最大位数。小数位数必须是从&0&到&p&之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为&0;因此,0 &= s &= p。最大存储大小基于精度而变化。
存储字节数
C#中的金额表示
C#中,Numeric(数值)类型有三种:整型、浮点型、Decimal类型。一般情况下可使用Decimal来表示货币数据,decimal&关键字表示&128&位数据类型。同浮点型相比,decimal&类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。decimal&类型的大致范围和精度如下表所示。
.NET Framework&类型
&1.0&&&10-28&到&&7.9&&&1028
28&到&29&位有效位
System.decimal
&&&&&&&&&也可以使用浮点型来表示精度要求不太高的货币数据,浮点型有float和double两种,能表示的精度范围如下表所示:
&1.5e&45&到&&3.4e38
&1.5e&45&到&&3.4e38
&5.0e&324&到&&1.7e308
15&到&16&位
&5.0e&324&到&&1.7e308
在SQL Server中,如果精度(小数点后位数)不确定,一般可以使用Money来表示货币数据,如果小数位数确定,可使用decimal类型,从节省空间的角度来看,尽量使用Money
和smallmoney类型。
&&&&&&&& SQL Server中的货币类型对应到C#中来可以使用数值类型来表示,主要使用浮点型和decimal类型,精度要求低就是用浮点型,精度要求高就是用Decimal类型。

我要回帖

更多关于 数据透视表金额汇总 的文章

 

随机推荐