Oracle浮点值在插入时不准确

时间:2015-12-18 10:49:23

标签: c# oracle oracle11g entity-framework-6 devart

当插入Oracle数据库FLOAT(126)列时,字符串值58.83更改为56,829999999999998。

我们正在使用:

  • .NET Entity Framework 6,
  • Devart dotConnect for Oracle Professional版本8.4.171.0和
  • Oracle 11g企业版11.2.0.3.0版。

字符串插入Oracle中的CLOB字段,然后在最终通过Devart插入FLOAT字段之前转换为C#中的小数(转换为十进制后值仍为58.83)。存储在该列中的观察值为56,829999999999998。

从数据库中读取值时,它仍然是错误的值。

是什么原因导致该值从58.83更改为56,829999999999998,Entity Framework,Devart或Oracle,我们如何更正此行为?

UPDATE 从SQL Developer进行测试时,数字会正确插入。

问题的解决方案确实如评论建议的那样,将数据类型更改为Number。我将精度设置为*并缩放(小数点右边的数字)为10.

Oracle docs state"此数据类型永远不应用于精确值,例如货币。"

在决定使用Float的替代方法时,这篇文章decimal(s,p) or number(s,p)?帮助解释了Number和Decimal数据类型之间的区别。

0 个答案:

没有答案