A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 申延超 中级黑马   /  2012-11-22 22:13  /  2629 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网上查的资料说一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。
还有说一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。
    既然整数部分最大只能有28位,那如何能存10的38次方的数?麻烦懂的同学解释下NUMERIC这个数据类型,谢谢!

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 欧玉斌 于 2012-11-23 12:18 编辑

翻了书,开了百度,都没有得到答案,
只是看到一种说法:SQL Server 为了和前端开发工具配合其所支持的数据精度默认最大为28 位。
不知道是不是说,存10^38是可以存下的,不过为了配合开发,就只存28位整数了???
但在sql2005操作的时候,却发现,整数部分输入29个数字也是可以的。
如字段score设为numeric(38, 0),我输入12345678901234567890123456789,也未识别出异常,再多输一个的时候,就出错了。
那么vs里有没有这种现象呢?C#里没有numeric,sql里numeric和decimal是一样的,为了测试一下,
我在vs2008里写了decimal a=12345678901234567890123456789m;发现是可以通过的,但多加一个数就出错了。
鼠标选到decimal,转到定义,发现
public const decimal MaxValue = 79228162514264337593543950335m;C#里定义的decimal的最大值是79228162514264337593543950335m(额,不知道这个数怎么来的)
而79228162514264337593543950335也恰巧是29位数。
越搞越郁闷了{:soso_e117:}
回复 使用道具 举报
欧玉斌 发表于 2012-11-23 12:06
翻了书,开了百度,都没有得到答案,
只是看到一种说法:SQL Server 为了和前端开发工具配合其所支持的数据 ...

谢谢,非常感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马