暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在过程或函数中执行算术运算时输出不准确

askTom 2017-09-12
311

问题描述

我正在尝试计算影响员工工资的项目,但是算术运算的结果是不准确的返回99.99999999999999而不是100
例如,这仅在过程或功能内部的操作发生,否则正常工作。
保存的脚本中的详细信息。

谢谢。

专家解答

它在所有情况下的工作原理都是一样的,但是您需要记住,该过程的一部分是将您的价值返还给客户端。在PL/SQL示例中,“客户端” 是plsql本身。在SQL Plus示例中,您将该值带回已应用默认格式的SQL列。如果我们删除它,我们会看到更多细节:

SQL> select (100/30) *(30 ) x from dual;

         X
----------
       100

SQL> col x format 99.9999999999999999999999999999999999999
SQL> select (100/30) *(30 ) x from dual;

                                        X
-----------------------------------------
 99.9999999999999999999999999999999999999
复制


事实上,我们没有得到100是共同的所有语言,程序,架构,因为我们有一个有限的精度来管理潜在的无限精度值。

https://en.wikipedia.org/wiki/Floating-point_arithmetic


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论