[英]SQL Server round()
我想舍入一个选择的值
例如:
select width from Home
width
的结果为“ 3.999999999999999”
我想成为“ 3.99”或“ 3.9”
ROUND(width, 1 or 2, 1)
应该最适合您。 例:
SELECT CONVERT(NUMERIC(13,2), ROUND(width, 2, 1))
FROM Home
将返回3.99,并且
SELECT CONVERT(NUMERIC(13,1), ROUND(width, 1, 1))
FROM Home
将返回3.9
如果您想要一个3.99或3.9的值,那么您就不需要round()
。 您需要floor()
。 但是,这适用于整数,但不适用于小数。
cast(width as decimal(10,2))
的幼稚方法将返回4.00
,以及round(width, 2)
。 一种方法是减去少量。 所以:
select cast(width - 0.005 as decimal(10, 2))
应该给你“ 3.99”。
如果只需要两个十进制值,则可以乘以100,将结果取底并除以100(这是必须的,因为floor仅将数字取底为整数):
select floor(width * 100) / 100 from Home
步骤如下
3.99999999 * 100 = 399.999999 --- Multiply by 100
floor(399.999999) = 399 --- floor
399 / 100 = 3.99 --- Divide by 100
当第三个参数不同于0时,结果将被截断而不是四舍五入
句法
ROUND ( numeric_expression , length [ ,function ] )
争论
numeric_expression
是精确数字或近似数字数据类型类别的表达式,位数据类型除外。
length
是numeric_expression要舍入的精度。 length必须是tinyint,smallint或int类型的表达式。 当length为正数时,numeric_expression将舍入为length指定的小数位数。 当length为负数时,numeric_expression在小数点的左侧舍入,由length指定。
function
是要执行的操作的类型。 函数必须是tinyint,smallint或int。 如果省略函数或值为0(默认值),则将数字表达式四舍五入。 当指定非0的值时,numeric_expression 被截断。
这是使用此版本的round
的选择:
select round(width, 2, 1) from Home
这很简单,如果您想要结果3.9,则
select round(width,1) from Home
如果需要结果3.99,请使用。
select round(width,2) from Home
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.