我想舍入一个选择的值
例如:
width
py4j.java_gateway:Received command c on object id p0
的结果是“3.999999999999999”
我想成为“3.99”或“3.9”
答案 0 :(得分:4)
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
答案 1 :(得分:3)
如果您想要一个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"。
答案 2 :(得分:2)
如果你只需要两个十进制值,你可以乘以100,将结果除以100(这是必要的,因为地板只能将一个数字放到一个整数上):
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
也可以使用不同形式的round function with a third parameter。
当第三个参数与0不同时,结果将被截断而不是舍入
<强>语法强>
ROUND ( numeric_expression , length [ ,function ] )
<强>参数强>
numeric_expression
是精确数字或表达式 近似数值数据类型类别,位数据类型除外。
length
是否对numeric_expression进行舍入的精度。 length必须是tinyint,smallint或int类型的表达式。什么时候 length是正数,numeric_expression是舍入到的 长度指定的小数位数。当长度是a 负数,numeric_expression在左侧舍入 小数点,由长度指定。
function
是什么类型的 执行的操作。 function必须是tinyint,smallint或int。什么时候 函数被省略或者值为0(默认值),numeric_expression 四舍五入。 指定0以外的值时,numeric_expression 被截断。
以下是使用此round
版本的选择:
select round(width, 2, 1) from Home
答案 3 :(得分:1)
这很简单,如果你想要结果3.9那么
select round(width,1) from Home
如果您需要结果3.99,请使用..
select round(width,2) from Home