Sql中的四舍五入,与保留两位小数的方式
https://www.cnblogs.com/mapstar/p/13601617.html
SQL中保留两位小数的方法有三种,(第2、3种方法类似):
1、使用round(数字,保留位数)函数,使用示例:
SELECT ROUND(123.9994, 3) --123.9990 SELECT ROUND(123.9995, 3) --124.0000 SELECT ROUND(748.584, -1) --750.000 SELECT ROUND(748.586, -2) --700.000 SELECT ROUND(748.586, -3) --Error 将expression转换为数据类型 numeric 时出现算术溢出错误 SELECT ROUND(748.586, -4) --0.000,如果length为负数,并且大于小数点前的数字个数,则ROUND将返回 0 SELECT ROUND(151.75, 0,0) --152.00 舍入 SELECT ROUND(151.75, 0,1) --151.00 截断
注:整数可以将保留位数设置为0,直接四舍五入,仍然会保留后面的位数为0。
2、使用CONVERT()函数,使用示例:
SELECT CONVERT(DECIMAL(13,2),13.123) --13.12
3、使用CAST()函数,使用示例:
SELECT CAST(13.123 as DECIMAL(13,2)) --13.12
这三种方法(其实是两种),还是有区别的,区别在于ROUND()只是进行四舍五入,仍然会保留后面的位数为0,但是convert()和cast() 却会截断后面的位数,示例:
SELECT CONVERT(DECIMAL(13,2),13.123) --13.12 SELECT CAST(13.123 as DECIMAL(13,2)) --13.12 SELECT ROUND(13.123,2) --13.120
关于四舍五入:我自己测试的是三种都是四舍五入,用的sqlserver2017,网上查的说什么的都有,有说convert是四舍六入五留双的,有说cast是直接截断的,不能四舍五入的。大都建议用round来四舍五入。