问题描述
今天利用sqlserver查数据,使用了一个ROUND(308.16000, 2)函数,发现在sqlserver工具中显示正常,但是在服务端查出来就会发生精度丢失问题。
ROUND和CAST区别
- CAST
是将一种类型转换为另一种类型,如String 转int,如果含有小数或其他字符,则报错;使用方法CAST('123.456' as decimal(38, 2))。 - ROUND
是将数据进行四舍五入或截取;四舍五入使用方法ROUND(123.75633, 2),截取使用方法ROUND(123.75633, 2, 1)。
SELECT ROUND(123.75633, 2, 1) ---123.75000
SELECT ROUND(123.75633, 2) ---123.76000
解决办法
将ROUND函数换成CAST函数即可解决。