美文网首页
第二十一章 ObjectScript 应用程序中的数值计算 -

第二十一章 ObjectScript 应用程序中的数值计算 -

作者: Cache技术分享 | 来源:发表于2023-11-09 08:34 被阅读0次

<center> 第二十一章 ObjectScript 应用程序中的数值计算 - 算术运算 </center>

算术运算

同质表示

仅涉及十进制值的表达式将始终产生十进制结果。同样,仅具有 $DOUBLE 值的表达式将始终生成 $DOUBLE 结果。此外,

  • 如果涉及十进制值的计算结果溢出,将导致 <MAXNUMBER> 错误。在这种情况下,不会像文字那样自动转换为 $DOUBLE
  • 如果十进制表达式下溢,则生成 0 作为表达式的结果。
  • 默认情况下,溢出、除零和无效操作的 IEEE 错误将分别发出 <MAXNUMBER>, <DIVIDE>, and <ILLEGAL VALUE> 错误信号,而不是生成 InfinityNaN 结果。可以通过单个进程的 %SYSTEM.Process 类的 IEEEError() 方法或整个系统的 Config.Miscellaneous 类的 IEEEError() 方法来修改此行为。
  • 表达式 0 ** 0(十进制)生成十进制值 0;但是,表达式 $DOUBLE(0) ** $DOUBLE(0) 生成 $DOUBLE1。在 IRIS 中,前者始终为真;后者是 IEEE 标准所要求的。

异构表示

涉及十进制和 $DOUBLE 表示形式的表达式始终生成 $DOUBLE 值。使用时会发生值的转换。因此,在表达式中

1 + 2 * $DOUBLE(4.0)

IRIS 首先将 12 作为十进制值相加。然后它将结果 3 转换为 $DOUBLE 格式并进行乘法运算。结果是 $DOUBLE(12)

clipboardRounding

必要时,数值结果将四舍五入到最接近的可表示值。当要舍入的值同样接近两个可用值时,则:

  • $DOUBLE 值按照 IEEE 标准中的定义四舍五入为偶数
  • 小数值从零开始四舍五入,即朝更大的值(绝对值)舍入

比较运算

同质表示

$DOUBLE(+0)$DOUBLE(-0) 之间的比较将这些值视为相等。这遵循 IEEE 标准。这与 IRIS 十进制中的相同,因为当 $DOUBLE(+0)$DOUBLE(-0) 转换为字符串时,两种情况的结果都是“0”。

$DOUBLE(nan) 与任何其他数值(包括 $DOUBLE(nan))之间的比较将表明这些值不大于、不等于且不小于。这遵循 IEEE 标准。这与通常的 ObjectScript 规则不同,后者表示相等性比较是通过转换为字符串并检查字符串是否相等来完成的。

注意:表达式 nan 等于 $DOUBLE(nan),因为比较是作为字符串比较完成的。

注意:但是,$LISTSAME 认为包含 $DOUBLE(nan) 的列表组件与包含 $DOUBLE(nan) 的列表组件相同。这是 $LISTSAME 唯一将不相等的值视为相等的地方。

异构表示

小数值和 $DOUBLE 值之间的比较是完全准确的。比较是在不对任一值进行任何舍入的情况下完成的。如果仅涉及有限值,那么这些比较将得到与将两个值转换为字符串并使用默认排序规则比较这些字符串时得到的结果相同的答案。

涉及运算符 <, <=, >, and => 的比较始终会生成十进制值形式的布尔结果 01。如果操作数之一是字符串,则在执行比较之前该操作数会转换为十进制值。其他数字操作数不被转换。如前所述,混合数字类型的比较是完全准确的并且没有转换。

对于字符串比较运算符(=, '=, ], '], [, '[, ]], ']] 等),在进行比较之前,任何数字操作数都会首先转换为字符串。

小于或等于、大于或等于

IRIS 中,运算符 <=>= 分别被视为运算符 '>'< 的同义词。

注意:如果在比较中使用运算符 <=>=,其中一个或两个操作数可能为 NaN,则结果将与 IEEE 标准规定的结果不同。

A/BNaN 时,表达式 A >= B 解释如下:

  1. 表达式转换为 A '> B
  2. 进一步变换为'(A >B)
  3. 如前所述,涉及 NaN 的比较给出的结果是 (a) 不等于、(b) 不大于、(c) 不小于,因此括号中的表达式会产生 false 值。
  4. 该值的否定结果为 true 值。

注意:如果表达式 A >= B 表示为 ((A > B) | (A = B)),则可以重写该表达式以提供 IEEE 预期结果。

布尔运算

对于布尔运算(and、or not、nor、nand 等),任何字符串操作数都会转换为十进制。任何数字操作数(十进制或 $DOUBLE)均保持不变。

数值为零被视为 FALSE;所有其他数值(包括$DOUBLE(nan)$DOUBLE(inf))均被视为 TRUE。结果是 01(十进制)。

注意:$DOUBLE(-0) 也是 false

相关文章

  • 第二十一章 Classes

    第二十一章 Classes Classes 类定义并不是 ObjectScript 的正式组成部分。相反,可以在类...

  • 数据结构 第一章 绪论

    [TOC] 第一章 绪论 1.1 计算机研究的问题 数值计算: 解决数学问题 非数值计算:管理系统(数据结构)DS...

  • Excel小技巧:表格中带单位的数值如何计算?

    Excel表格带单位的数值如何计算?我们在计算Excel表格里面的数值时,要是发现Excel表格中需要计算的数值都...

  • 英语词汇笔记:计算机英语

    第一章 Base of Computer numerical calculation 数值计算 logical c...

  • Python-Scipy进行数值积分

    Python的Scipy模块中拥有大量的数值计算函数,方便我们快速进行数值计算。 Scipy中的integrate...

  • Caché 命令大全

    Caché ObjectScript 命令 第一章 Caché 命令大全 BREAK 命令 第二章 Caché 命...

  • 第一章 Caché JSON 简介

    第一章 Caché JSON 简介 简介 Caché 和 Caché ObjectScript现在提供了对JSON...

  • Android中数值的精确计算

    Android中数值计算的精度 在平常的开发中,会经常进行数值的计算,而如何才能更加准确的得到计算结果是最重要的,...

  • 深度学习中的数值计算

    本文首发自公众号:RAIS 前言 本系列文章为《Deep Learning》读书笔记,可以参看原书一起阅读,效果更...

  • 十月五号

    、数据 数据指的是能输入到计算机中,并能被计算机程序处理的对象。 对于数值类型(整型、实型等),可以进行数值计算;...

网友评论

      本文标题:第二十一章 ObjectScript 应用程序中的数值计算 -

      本文链接:https://www.haomeiwen.com/subject/uodcwdtx.html