我目前能想到的不同方式的结果比较1, print cast(1.1110000000 as decimal(10,3)) print cast(1.0504680000 as decimal(10,6)) ------- 1.111 1.050468 2, select cast(1.1110000000 as decimal(10,3)) union all select cast(1.0504680000 as decimal(10,6)) -------- 1.111000 1.050468 (自动以当列中最长的小数位数为标准加0了) 3, select cast(cast(1.1110000000 as decimal(10,3)) as varchar(50)) union all select cast(cast(1.0504680000 as decimal(10,6)) as varchar(50)) ------------ 1.111 1.050468 (以varchar来显示倒是正确,不过已经不是decimal了)
刚看见老大的回帖 这样也行 select cast(1.1110000000 as float) union all select cast(1.0504680000 as float) --- 1.111 1.050468
FROM(
SELECT col = CONVERT(decimal(28, 10), 1.1110000000) UNION ALL
SELECT col = CONVERT(decimal(28, 10), 1.0504680000)
)A
另外, 建议在程序中处理显示问题.
print cast(1.1110000000 as decimal(10,3))
print cast(1.0504680000 as decimal(10,6))
-------
1.111
1.050468
2,
select cast(1.1110000000 as decimal(10,3))
union all
select cast(1.0504680000 as decimal(10,6))
--------
1.111000
1.050468
(自动以当列中最长的小数位数为标准加0了)
3,
select cast(cast(1.1110000000 as decimal(10,3)) as varchar(50))
union all
select cast(cast(1.0504680000 as decimal(10,6)) as varchar(50))
------------
1.111
1.050468
(以varchar来显示倒是正确,不过已经不是decimal了)
这样也行
select cast(1.1110000000 as float)
union all
select cast(1.0504680000 as float)
---
1.111
1.050468
邹建的方法可行
另外一位朋友的方法不可行,那是因为我数量的精度是保存在数据库中的,无法事先获知
因此没法通过decimal来转换,float这个数据类型可以