我有一个表达:
Select (2345789 * 39.456) / 100
输出为925554.5078400
。
我想显示925554.50
,即小数点后的2个值。
如果我使用圆形
Select round((2345789 * 39.456)/100, 1)
输出为925554.5000000
。但我想要小数点后正好2位数。怎么做?
答案 0 :(得分:5)
说明显而易见,但925554.5000000和925554.50是相同的数字。
如果你想显示那个带有两个小数位的数字,那么这是你的UI代码的问题,而不是你的数据库。
话虽如此,如果必须在数据库本身中执行此操作,请尝试以下操作:
-- 1 decimal place
SELECT CAST(ROUND(@yourNumber, 1, 1) AS DECIMAL(18, 1))
-- 2 decimal places
SELECT CAST(ROUND(@yourNumber, 2, 1) AS DECIMAL(18, 2))
-- 3 decimal places
SELECT CAST(ROUND(@yourNumber, 3, 1) AS DECIMAL(18, 3))
-- 4 decimal places
SELECT CAST(ROUND(@yourNumber, 4, 1) AS DECIMAL(18, 4))
答案 1 :(得分:1)
我有解决方案也使用截断值
Select (2345789 * 39.456)/100 result-925554.5078400
select cast (ROUND((2345789 * 39.456)/100 ,2,1)as decimal(18,2)) result-925554.50
select cast (ROUND((2345789 * 39.456)/100 ,3,2)as decimal(18,3)) result-925554.507
select cast (ROUND((2345789 * 39.456)/100 ,4,3)as decimal(18,4)) result-925554.5078
确定。我希望你能从中理解。
答案 2 :(得分:0)
尝试(未测试):
SELECT CAST(number as decimal(18,2))
答案 3 :(得分:0)
请参阅:
select ROUND(12345.67890,-4) --result: 10000.00000
select ROUND(12345.67890,-3) --result: 12000.00000
select ROUND(12345.67890,-2) --result: 12300.00000
select ROUND(12345.67890,-1) --result: 12350.00000
select ROUND(12345.67890,0) --result: 12346.00000
select ROUND(12345.67890,1) --result: 12345.70000
select ROUND(12345.67890,2) --result: 12345.68000
select ROUND(12345.67890,3) --result: 12345.67900
select ROUND(12345.67890,4) --result: 12345.67890
select ROUND(12345.67890,-4,1) --result: 10000.00000
select ROUND(12345.67890,-3,1) --result: 12000.00000
select ROUND(12345.67890,-2,1) --result: 12300.00000
select ROUND(12345.67890,-1,1) --result: 12340.00000
select ROUND(12345.67890,0,1) --result: 12345.00000
select ROUND(12345.67890,1,1) --result: 12345.60000
select ROUND(12345.67890,2,1) --result: 12345.67000
select ROUND(12345.67890,3,1) --result: 12345.67800
select ROUND(12345.67890,4,1) --result: 12345.67890
您可以使用:
select ROUND(12345.67890,1) --result: 12345.70000
或者:
select ROUND(12345.67890,1,0) --result: 12345.70000
注意: ROUND(numeric_expression,length [,function])
数值_ 的
是精确数字或近似数值数据类型类别的表达式,但位数据类型除外。
长度
是否对numeric_expression进行舍入的精度。 length必须是tinyint,smallint或int类型的表达式。当length为正数时,numeric_expression将四舍五入为length指定的小数位数。当length为负数时,numeric_expression在小数点左侧舍入,由长度指定。
功能
是要执行的操作类型。 function必须是tinyint,smallint或int。省略function或者值为0(默认值)时,numeric_expression将四舍五入。如果指定了0以外的值,则会截断numeric_expression。