默认情况下,COBOL如何处理除法舍入?

猎鹰7

在COBOL中,结果是什么

COMPUTE RESULT1  = 97 / 100
COMPUTE RESULT2  = 50 / 100
COMPUTE RESULT3  = 32 / 100
COMPUTE RESULT4  = -97 / 100
COMPUTE RESULT5  = -50 / 100
COMPUTE RESULT6  = -32 / 100

当RESULT1 / 2/3是:

  1. 图片S9(4)
  2. PIC S9(4)V9
  3. PIC S9(4)V99

或者,换句话说,COBOL除法的默认舍入模式是什么?

编辑:负值会怎样?

甚至“丢弃”都是一种舍入模式,是否等效于向负无穷大或向零舍入?

比尔·伍德格

除非您告知,否则COBOL不会四舍五入。

如果您不告诉它进行舍入,它所做的就是低阶截断。有些人可能更喜欢说其他的东西,这并不重要,效果是一样的。截断。

负值的处理方式与正值相同(请保留最终结果所需的有效位数,然后再加上一位(也请参见后面的说明):-0.009将小数点后两位至- 0.01; -0.004将四舍五入为-0.00。

如果您没有为字段指定小数位,则任何小数部分都将被简单丢弃。

因此,当您的COMPUTE的所有目标均为9(4)时,它们将全部包含零,包括负值。

如果您的COMPUTE的所有目标均为9(4)V9,而没有四舍五入,则它们将分别包含0.9、0.5和0.3,其中低阶(从第二个十进制数字开始)小数部分被截断。

并且,当您的COMPUTE的所有目标均为9(4)V99时,它们将包含0.97、0.50和0.32,其低位小数部分将被截断。

通过对任何算术动词(ADD,SUBTRACT,MULTIPLY,DIVIDE,COMPUTE)的结果使用ROUNDED短语来对语言进行四舍五入。

ADD some-name                 some-other-name   GIVIING                some-result
                                ROUNDED

COMPUTE some-result ROUNDED   = some-name
                              + some-other-name

以上是彼此等效的。

按照1985年标准,ROUNDED将最终结果加上小数点后一位,并通过以最小可能的单位加“ 1”来调整具有定义的小数点后的实际字段(对于V99,将增加百分之一百,在V999时将加上千分之一,不带小数位将加一,而任何缩放量(请参见图片字符P)将加一)。

您可以考虑将一个绝对值相加,结果保留原始符号。或者,您也可以将其视为以其他任何方式完成,以达到相同的结果。标准描述了四舍五入,实现以其喜欢的任何方式均符合标准。我的描述是对人类理解的描述。没有编译器需要按照我所描述的方式实现它,但是从逻辑上讲结果是相同的。

不要为实现它而烦恼。

2014年标准取代2002年标准,还有更多的取整选项,对于您必须编码的85个标准,这很容易使用(很容易使用REDEFINES)。

`ROUNDED` `MODE IS` `AWAY-FROM-ZERO` `NEAREST-AWAY-FROM-ZERO` `NEAREST-EVEN` `NEAREST-TOWARD-ZERO` `PROHIBITED` `TOWARD-GREATER` `TOWARD-LESSER TRUNCATION`

一次只能指定一个“模式”,如果未指定MODE IS,则默认值为TRUNCATION,建立向后兼容性(并使满足所有感觉的人满意了)。

PROHIBITED选项很有趣。例如,如果结果字段具有两个小数位,则POHIBITED要求计算的结果仅具有两个高位小数位,并且所有低位值均为零。

重要的是要用COMPUTE注意,只有最终结果是四舍五入的,中间结果不是。如果需要中间舍入,则每个舍入结果需要一个COMPUTE(或其他算术动词)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

默认情况下,ubuntu 17.10如何处理两个wifi适配器?

在这种情况下如何处理ConcurrentModificationException

在我的情况下,如何处理多个http请求?

在这种情况下如何处理ToolStripMenuItem?

没有$ this的情况下如何处理类变量?

在无关的情况下该如何处理?

在各种故障情况下,cadence如何处理故障?

Python Click库如何处理默认情况下为标志和True的选项?

在无法启动Windows的情况下,我该如何处理Windows文件?

在 S3 类的情况下如何处理更多参数?

在这种情况下,如何处理Function <T,R>和省略号/ varargs?

在JavaScript中发生循环的情况下,如何处理Firebase引用?

在数据集的情况下如何处理新对象实例化?

在SSO情况下应如何处理应用程序初始化?

Visual Studio Online-在这种情况下如何处理nuget包?

在这种情况下,我应该如何处理Clojure中的可变状态?

Spark-在迭代(或递归)函数调用的情况下如何处理惰性求值

C ++ / g ++:在这种情况下,编译器如何处理内存分配?

在这种情况下如何处理恶意文件名

如何在不舍入的情况下截断BigDecimal

默认情况下如何隐藏div?

默认情况下如何使UISearchController()隐藏?

默认情况下如何隐藏列?

默认情况下如何显示ionicPopover

默认情况下如何使Windows透明

默认情况下如何打开菜单?

如何在不禁用默认的情况下向Laravel添加新的异常处理程序?

默认情况下启用注释处理器

默认情况下,spark是否具有键值对处理?