当插入Oracle数据库FLOAT(126)列时,字符串值58.83更改为56,829999999999998。
我们正在使用:
字符串插入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数据类型之间的区别。