【问题标题】:Difference between float and decimal in Oracle and t-sqlOracle和t-sql中float和decimal的区别
【发布时间】:2019-02-01 10:13:19
【问题描述】:

我在 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

甲骨文:

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;

【问题讨论】:

  • 如果您以文本格式而不是图像发布示例查询或数据,则很容易识别。
  • 我写了代码,你可以看看,谢谢

标签: sql oracle tsql floating-point decimal


【解决方案1】:

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

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

【讨论】:

  • 如果float是近似值,为什么它在T-sql和oracle中给我不同的结果?
  • @VasoMiruashvili - “近似”的意思是*不精确”。因此,具有不同实现的不同平台产生近似但不完全相同的值也就不足为奇了。
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2017-08-21
  • 2011-03-17
  • 2010-10-20
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多