其中decimal(10,2),就是指整数10位,保留2位小数
2、你可以查询的时候用round()函数四舍五入保留小数,如select round(abc,2)
1、用函数 ROUND(数值,s) ,其中 s 表示 小数位数。
例:SELECT ROUND(4.994,2) 返回 4.990。
2、用函数 CAST(数值 as numeric(n,s)),其中n表示有效数字位数,s表示小数位数。
例:SELECT CAST(4.994 as numeric(10,2)) 返回 4.99。
3、用函数 CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数。
例: SELECT CONVERT(numeric(10,2),4.985) 返回 4.99。
其运用的函数是函数 TRUNC。而trunc函数的功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。
扩展资料
TRUNC(for number)语法格式:TRUNC(number,[decimals])
其中:
number 待做截取处理的数值。
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。
trunc函数 turnc(x,y)如果y是负数,则对x在小数点左边的第|y|位处进行截断。
例如:TRUNC(5.75, -1)=0;
看成 0005.75.000 从小数点左边第一位往左边截,是0。
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。
参考资料来源:百度百科 trunc
对于小数位可能很长(比如excel的浮点数)不确定长度的浮点型数字,double类型才是正确的选择。decimal多用于定长小数的情况。
首先:要确定你的问题是什么。
1、是小数位数后面的0不需要?
那double会自动忽略后面所有的0.
2、是数据被剪切(小数位数变少)了?
那么可以有2个解决方案。
A、使用double定义该字段,然后重新导入数据。
B、使用decimal,但是小数位的总长度必须大于你需要导入的数据小数点的总长度。且字段总长度必须大于等于“小数点左边的长度+小数点右边的长度”
以上所有解决方案都解决不了已经导入的数据的小数值,因为丢失在导入的时候已经发生了。所以要保证正确性,必须重新导入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)