使用Decimal类型格式化数据

1、int  或 float 类型转为Decimal类型的时候注意Decimal的长度,

将int型转为Decimal型

declare @a  int 
set @a = 100
select CONVERT(decimal(4,2), @a)

 

输出:10.00;

 

如果将100赋值给变量@a

declare @a  int 
set @a = 100
select CONVERT(decimal(4,2), @a)

 

执行后会报错:

消息 8115,级别 16,状态 8,第 4 行
将 int 转换为数据类型 numeric 时出现算术溢出错误。

 

因为Decimal(4,2)只有两个整数位,而100是3位整数,因此会产生溢出。

 

结论: 将值赋给Decima(m, n)l类型是,值的整数部分的位数不能大于定义的Decimal(m, n)的整数位m-n;

 

declare @b float 
set @b = 10.1
select CONVERT(decimal(4, 2), @b)

 

输出: 10.10

declare @b float 
set @b = 10.001
select CONVERT(decimal(4, 2), @b)

 

输出: 10.00

 

declare @b float 
set @b = 10.007
select CONVERT(decimal(4, 2), @b)

 

输出: 10.01

结论:将值赋给Decima(m, n)l类型是,值的小数部分的位数只会保留n位,且按n+1位四舍五入

 


 

            
阅读更多
文章标签: float
个人分类: SQL
想对作者说点什么? 我来说一句

BigDecimal使用

2008年11月20日 31KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭