C# Oracle浮点值在插入时不精确

C# Oracle浮点值在插入时不精确,c#,oracle,oracle11g,entity-framework-6,devart,C#,Oracle,Oracle11g,Entity Framework 6,Devart,将字符串值58.83插入到Oracle数据库FLOAT126列中时,将更改为568299999998 我们正在使用: .NET实体框架6, 适用于Oracle Professional 8.4.171.0版和 Oracle 11g企业版11.2.0.3.0版。 该字符串被插入到Oracle中的CLOB字段中,然后在C中转换为十进制。在转换为十进制后,该值的读数仍然为58.83,最后通过Devart插入到浮点字段中。存储在列中的观察值为568299999998 当从数据库中读取该值时,它仍然是错误

将字符串值58.83插入到Oracle数据库FLOAT126列中时,将更改为568299999998

我们正在使用:

.NET实体框架6, 适用于Oracle Professional 8.4.171.0版和 Oracle 11g企业版11.2.0.3.0版。 该字符串被插入到Oracle中的CLOB字段中,然后在C中转换为十进制。在转换为十进制后,该值的读数仍然为58.83,最后通过Devart插入到浮点字段中。存储在列中的观察值为568299999998

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

是什么导致值从58.83更改为568299999998,实体框架、Devart或Oracle,我们如何纠正这种行为

更新 从SQL Developer进行测试时,正确插入数字

这个问题的解决方案确实是,正如评论所建议的,将数据类型更改为Number。我将精度设置为*并将小数点右侧的数字缩放为10

Oracle文档指出,此数据类型不应用于精确值,如货币


这篇文章有助于解释数字和十进制数据类型之间的区别,以确定使用浮点的替代方法。

。简单答案浮动不准确数据类型,请使用数字/十进制;请点击另一个问题的链接,详细解释为什么会发生这种情况。解决方案不是使用FLOAT数据类型,而是使用另一种数据类型,如lad2025所建议的。没有看到这个问题:创建表T val FLOAT126;,插入T值“58.83”;然后从T中选择*;Oracle 11.2.0.1上的输出58.83。0@Heinzi你是对的,根本的问题是使用浮点数,是的,问题的解决方案是使用另一种数据类型,如Number,但我不同意这个问题是重复的。我的问题清楚地提到了所使用的技术,正如我和MT0在您直接运行SQL命令时发现的,例如,从SQL Developer中,值被正确插入。@Deakus:我明白您的意思,我将重新打开问题以供参考:。我建议您添加已更新问题的文本作为答案。