create table test_int
(
num bigint
)
insert into test_int (num)
values (4096);
我的任务是计算4096/1024/1024并得到小数答案。好吧,int不会在dot之后存储值,所以:
select CAST (num as decimal)/1024/1024 AS decimal, ROUND ((CAST (num as decimal)/1024/1024),4,1) AS numeric from test_int
第一个是纯粹的攻击,第二个是四舍五入:
decimal numeric 0.00390625000 0.00390000000
任务是在值之后删除空零。
select convert(decimal(25,5), 4096/1024/1024 ,0)
返回0.00000。
那我怎么能得到0.0039而不是0.00390000000? 提前感谢您提供任何帮助。
答案 0 :(得分:1)
将结果投射到FLOAT
。
<强>查询强>
SELECT
CAST
(
CAST(num as decimal)/1024/1024
AS FLOAT
) AS decimal,
CAST
(
ROUND((CAST (num as decimal)/1024/1024),4,1)
AS FLOAT
) AS numeric
from test_int;
<强>结果强>
+---------------+---------------+
| decimal | numeric |
+---------------+---------------+
| 0.00390625 | 0.0039 |
+---------------+---------------+
答案 1 :(得分:1)
这个可以使用,但是如果我没弄错的话,这只适用于2008版及以上版本。
{{1}}