小编Gre*_*koz的帖子

计算舍入为cobol

我对cobol中的计算函数的舍入感到困惑.

宣言:

VAR-A      PIC  S9(9)V99 COMP-3.
VAR-B      PIC  S9(9)V9(6) COMP-3.
Run Code Online (Sandbox Code Playgroud)

程序.

MOVE +12.08 TO VAR-A.
MOVE +6.181657 TO VAR-B.


COMPUTE VAR-A ROUNDED = VAR-A + VAR-B.
Run Code Online (Sandbox Code Playgroud)

VAR-A的结果是18.27还是18.26?cobol会对计算做什么?它会将VAR-B首先舍入到VAR-A中指定的小数位,还是将cobol添加2个变量然后将它们四舍五入到VAR-A中指定的小数位?

任何帮助将不胜感激.

@NealB,

这个例子怎么样:

宣言:

01  VAR-ARRAY  OCCURS 22 TIMES.
    03  VAR-A      PIC  S9(9)V9(6) COMP-3.


01  VAR-B      PIC  S9(9)V99 COMP-3.
Run Code Online (Sandbox Code Playgroud)

假设VAR-A是一个数组,其值如下:

VAR-A(01) =  123.164612
VAR-A(02) =  12.07865
VAR-A(03) =  6.181657
VAR-A(04) =  1.744353
VAR-A(05) =  6.118182
VAR-A(06) =  1.744353
VAR-A(07) =  6.158715
VAR-A(08) =  1.744353
VAR-A(09) =  6.194759
VAR-A(10) =  1.744353
VAR-A(11) =  3.037896 …
Run Code Online (Sandbox Code Playgroud)

cobol

8
推荐指数
1
解决办法
5万
查看次数

VBA舍入问题

我在VBA中有这个模糊的舍入问题.

a = 61048.4599674847
b = 154553063.208822
c = a + b   
debug.print c
Result: 
154614111.66879 
Run Code Online (Sandbox Code Playgroud)

这是一个问题,为什么VBA取代了变量c?我没有发出任何舍入功能.我期待的价值是154614111.6687894847.即使我将变量c舍入或格式化为15位小数,我仍然没有达到预期的结果.

任何解释将不胜感激.

编辑:

使用cDec获得了预期的结果.我在Jonathan Allen的回复中已经读过这个为什么CLng会产生不同的结果?

以下是测试结果:

a = cDec(61048.4599674847)
b = cDec(154553063.208822)
c = a + b
?c
154614111.6687894847 
Run Code Online (Sandbox Code Playgroud)

excel vba

6
推荐指数
1
解决办法
3605
查看次数

将十六进制移动到cobol中的comp声明变量

是否可以将一个十六进制字符串分配给comp或二进制声明的变量?

示例:01 COMP-VAR PIC 9(4)COMP.

将X'04D2'移至COMP-VAR.

应该输出+1234.

编辑:

对不起,我只是举了一个例子.真实情况是数据将来自外部源,即数据集.在将数据移动到comp声明变量之前,我需要将数据存储在字母数字变量中.我的问题是,当我将字母数字数据移动到comp变量时数据不正确.非常感激您的帮忙.

cobol

2
推荐指数
1
解决办法
6887
查看次数

标签 统计

cobol ×2

excel ×1

vba ×1