这是我的专栏的一个例子:
-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)
他们没有工作....
答案 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”始终使用科学记数法进行转换。你想要前四位数(小数点后两位,小数位和第一位)。可能会出现负号,因此会在之后添加。