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

第十九章 ObjectScript 应用程序中的数值计算 - 选

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

<center> 第十九章 ObjectScript 应用程序中的数值计算 - 选择数字格式 </center>

选择数字格式

选择使用哪种格式很大程度上取决于计算的要求。 IRIS 十进制格式允许超过 18 位十进制数字的精度,而 $DOUBLE 只能保证 15 位。

在大多数情况下,十进制格式更易于使用并提供更精确的结果。它通常适用于涉及十进制值的计算(例如货币计算),因为它给出了预期的结果。十进制分数通常不能精确地表示为二进制分数。

另一方面,$DOUBLE 中的数字范围明显大于本机格式允许的范围:1.0E3081.0E145。那些范围是重要因素的应用程序应使用 $DOUBLE

将在外部共享数据的应用程序也可以考虑以 $DOUBLE 格式维护数据,因为它不会进行隐式转换。大多数其他系统使用 IEEE 标准作为二进制浮点数的表示形式,因为它直接受到底层硬件架构的支持。因此,十进制格式的值必须先进行转换,然后才能进行交换,例如通过 ODBC/JDBCSQL 或语言绑定接口。

如果 $DOUBLE 值在为 IRIS 十进制数定义的范围内,则将其转换为十进制,然后转换回 $DOUBLE 值将始终产生相同的数字。反之则不然,因为 $DOUBLE 值的精度低于十进制值。

因此,建议尽可能以一种表示形式或另一种表示形式进行计算。在表示形式之间来回转换值可能会导致准确性损失。大多数应用程序可以使用 IRIS 十进制格式进行所有计算。 $DOUBLE 格式旨在支持那些与使用 IEEE 格式的系统交换数据的应用程序。

相比 $DOUBLE 更喜欢 IRIS 十进制的原因是:

  • IRIS 十进制具有更高的精度,几乎有 19 位十进制数字,而 $DOUBLE 的十进制数字不到 16 位。
  • IRIS 十进制可以精确地表示小数部分。值 0.1IRIS 十进制的精确值;但二进制浮点数中没有精确的等价物,因此 0.1 必须以 $DOUBLE 格式近似。

对于科学数而言, $DOUBLE 相对于十进制的优点是:

  • $DOUBLE 使用与大多数计算硬件使用的 IEEE 双精度二进制浮点完全相同的表示形式。
  • $DOUBLE 具有更大的范围:$DOUBLE 的最大范围为 1.7E308, 十进制的最大范围为 9.2E145

转换:字符串

当将值从字符串转换为数字时,或者在编译程序时处理写入的常量时,只有前 38 位有效数字可以影响尾数的值。其后的所有数字将被视为零;也就是说,它们将用于确定指数的值,但不会对有效数字值产生额外影响。

字符串作为数字

IRIS 中,如果在表达式中使用字符串,则该字符串的值是该字符串中从第一个字符开始包含的最长数字文字的值。如果不存在这样的文字,则字符串的计算值为零。

数字字符串作为下标

在计算中,字符串“04”和“4”之间没有区别。但是,当此类字符串用作本地或Global数组的下标时, IRIS 会对它们进行区分。

在 IRIS 中,包含前导零(在减号之后,如果有的话)或小数部分末尾尾随零的数字字符串在用作下标时将被视为字符串。作为字符串,它们有一个数值;它们可以用于计算。但作为局部或Global的下标,它们被视为字符串并按字符串进行整理。因此,在对列表中:

  • 4 versus 04

  • 10 versus 10.0

  • .001 versus 0.001

  • .3 versus -0.3

  • 1 versus +01

左边的那些用作下标时被视为数字,右边的那些被视为字符串。 (左侧的形式没有无关的前导和尾随零部分,有时被称为规范形式。)

 SET ^||TEST("2") = "standard"
 SET ^||TEST("01") = "not standard"
 SET NF = "Not Found"

 WRITE """2""", ": ", $GET(^||TEST("2"),NF), !
 WRITE 2,  ": ", $GET(^||TEST(2),NF), !
 WRITE """01""",  ": ", $GET(^||TEST("01"),NF), !
 WRITE 1,  ": ", $GET(^||TEST(1),NF), !, !
 SET SUBS=$ORDER(^||TEST(""))
 WRITE "Subscript Order:", !
 WHILE (SUBS '= "") {
     WRITE SUBS, !
     SET SUBS=$ORDER(^||TEST(SUBS))
     }

相关文章

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

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

  • 第十九章 Caché 函数大全 $INCREMENT 函数

    第十九章 Caché 函数大全 $INCREMENT 函数 将指定的增量添加到变量的数值。 大纲 参数 varia...

  • Python-Scipy进行数值积分

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

  • Android中数值的精确计算

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

  • 第十九章 SQL函数 ASIN

    第十九章 SQL函数 ASIN 一个标量数值函数,返回角的正弦的反正弦(以弧度为单位)。 大纲 参数 numeri...

  • 深度学习中的数值计算

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

  • 十月五号

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

  • 数值计算

    这周组会的内容涉及到数值计算的结果。 老师说,我们一定要进行无量纲化,才能带入公式中进行计算。 这样的结果才算是基...

  • Java工程师之Oracle技术-SQL入门(2)

    分组计算函数和GROUP BY字句 常用分组计算函数 SUM(列) 数值类型,计算和 AVG(列) 数值类型,计算...

  • 花书第四章笔记

    @[toc] 第四章 数值计算 掌握深度学习中所需要的数值计算相关知识 数值计算[p72-p85] 4.1 上溢和...

网友评论

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

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