繁体   English   中英

SQL Server round()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM