Oracle和T-SQL中的float和十进制之间的区别

时间:2019-02-01 10:13:20

标签: sql oracle tsql floating-point decimal

我在Oracle和t-sql中选择了相同的查询,我有点困惑

答案恰恰相反。

(我对浮点数和小数点之间的差异感兴趣)

一些解释?

T-sql:

DECLARE @A decimal(30,20);   
DECLARE @b float(10);


set @A=100
set @b=100

select 
  @A/3 + @A/3 + @A/3 as decimal,
  @b/3 + @b/3 + @b/3 as float

Oracle:

Declare flt Float;
        dcm Decimal(30,20);

Begin

  flt:=100;
  dcm:=100;

  flt:=flt/3+flt/3+flt/3;
  dcm:=dcm/3+dcm/3+dcm/3;

  dbms_output.put_line(flt);
  dbms_output.put_line(dcm);

End;

1 个答案:

答案 0 :(得分:0)

计算机科学中的FLOAT是近似值,您可以阅读:Is floating point math broken?

TSQL中的十进制值就像2整数之间有一个点,因此它的确切值但需要更多空间。 我将始终建议您使用数据库中的十进制值。