如何在sql server中将数字舍入到n位小数

时间:2015-05-21 08:58:08

标签: sql sql-server rounding

enter image description here我在表格中有列,我想要舍入到一些小数位。 哪个存储在其他表中。

实际上我的数据存储为8位小数,但根据用户的喜好,我需要显示小数位。

列数据类型是数字(19,8)

我有返回所有行的过程。所以那时我只想将我的列舍入到指定的十进制小数

想做类似

的事情
declare @i int = 2
Begin
select cast (12533333.193 as numeric(38,@i))
end

如何实现这一目标? 请建议

3 个答案:

答案 0 :(得分:1)

这是最简单的

在开始之前我想告诉它这只适用于float类型(是的!你需要将你的小数/数字转换成浮点数!)。语法方面,它也是最易读的

select round(cast(65.456 as float),2) (这将四舍五入到小数点后两位)

select round(cast(65.456 as float),1) (这将舍入到小数点后1位)

select round(cast(65.456 as float),0) (这将舍入到0位小数)

请参阅下面的快照

Snapshot

答案 1 :(得分:0)

您可以使用sql-server的ROUND函数

DECLARE @i int = 2
BEGIN
SELECT ROUND(val,@i)
FROM mytable
END

SQLFIDDLE

答案 2 :(得分:0)

你可以在查询中向上舍入后转换为2位小数,

或在报告或系统中显示时

DECLARE @i int = 2
BEGIN
SELECT 
cast(
    ROUND(val,@i)
    as decimal(10,2)
)
FROM mytable
END