declare @g float
set @g=1000000
select cast(@g/10000 as numeirc(10,0)) as vReturn---vReturn=100.0,我要得到100就行了
set @g=1000100
select cast(@g/10000 as numeirc(10,2)) as vReturn---vReturn=100.01000000000001,我要得到100.01就行了
set @g=1000000
select cast(@g/10000 as numeirc(10,0)) as vReturn---vReturn=100.0,我要得到100就行了
set @g=1000100
select cast(@g/10000 as numeirc(10,2)) as vReturn---vReturn=100.01000000000001,我要得到100.01就行了
float为否点数,不精确
select convert(numeric(9,2),@g/10000) as vReturn
如:
g=10001000 则g/10000=1000.1
g=10000100 则g/10000=1000.01
g=10010000 则g/10000=1001
g=10000010 则g/10000=1000.001
g=10000001 则g/10000=1000.0001
其中g是从数据库中取到的
set @g=1000000
select cast(round(@g/10000,0) as decimal(10)) as vReturn---vReturn=100.0,我要得到100就行了set @g=1000100
select cast(round(@g/10000,2)as decimal(10,2)) as vReturn---vReturn=100.01000000000001,我要得到100.01就行了
你的被除数一定是整数吗?还是可以是float型的?
2 stwangyan() ( ) 信誉:100
那个float是我写的,呵,浮点出错了:)
管它是不是float,轉成 float就沒錯。
Declare @g int
SELECT @g=10001000
SELECT cast(@g*1.0/10000 as float)SELECT @g=10000100
SELECT cast(@g*1.0/10000 as float)SELECT @g=10000010
SELECT cast(@g*1.0/10000 as float)
N_Chow兄,有没有试过?
试试这个:
declare @g float
set @g=10000001
print cast(@g*1.0/10000 as float)
我的结果是1000,而且当@g较大时,float使用科学记数法,将它转换成varchar还是科学记数法的形式。将其转换成numeric之类的又会多了几个零。我还没想到好办法。
我用了print,
佩服佩服!
select replace(rtrim(replace(convert(varchar(100),1000.100/4.000000),0,' ')),' ',0)
select cast(1000.100*1.0/4.000000 as float)上而的结果是:250.025
下面的结果是:250.02500000000001
这个贴子的问题是不是可以解决了?这也是一个方法哦。
select replace(rtrim(replace(convert(varchar(100),@g*1.0/10000),0,' ')),' ',0)
浮点数的这个问题可能跟其在计算机内部的表示有关系啦!