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来四舍五入。

 

posted @ 2024-01-07 14:32  yinghualeihenmei  阅读(495)  评论(0编辑  收藏  举报