在点之后舍入到2个数字

时间:2016-07-22 10:29:32

标签: sql sql-server sql-server-2008

这是我的专栏的一个例子:

-5,17363929475323E-14
1,4210854715202E-14
1,3855583347322E-13
-2,8421709430404E-14
-1,4210854715202E-14
3,5527136788005E-15
3,5527136788005E-15
1,24344978758018E-14
-5,6843418860808E-14

我想在结肠

之后将它们四舍五入

所以它将是:

-5,17
1,42
1,39
....

我试过

CAST (-1,4210854715202E-14 AS decimal (19,2)),
ROUND (-1,4210854715202E-14,2)
convert(decimal(38,2), -1,4210854715202E-14)

他们没有工作....

3 个答案:

答案 0 :(得分:5)

数学上-1,4210854715202E-14表示-0,000000000000014210854715202。所以,显然当你将它转换为2位小数时,它会给你0,00,实际值远小于零。

答案 1 :(得分:1)

这是浮点数据类型

的最短尾数
select cast (-1.4210854715202E-14 as float (1))
-1,421085E-14

介意小数点字符'。'

答案 2 :(得分:0)

嗯,如果你想要前三个有效小数位,这里有一个方法:

select ((case when val < 0 then '-' else '' end) +
        left(convert(varchar(32), abs(val), 1), 4)
       )

这是如何工作的?对于数字,格式“1”始终使用科学记数法进行转换。你想要前四位数(小数点后两位,小数位和第一位)。可能会出现负号,因此会在之后添加。