我在COBOL的DIVIDE动词的剩余部分有这个奇怪的输出。 目标只是将213.20除以10,然后将商除去另一个变量以及余数。我期待其余部分的价值为3.2,但它只给了我0.请赐教。
请参阅下面的代码段:
WORKING-STORAGE SECTION.
01 VAR-A PIC S9(09)V99 COMP-3 VALUE 213.20
01 VAR-B PIC S9(09)V99 COMP-3 VALUE 10.00
01 VAR-C PIC S9(09)V99 COMP-3 VALUE 0.
01 VAR-D PIC S9V99 COMP-3 VALUE 0.
PROCEDURE DIVISION.
MAIN-PARAGRAPH.
DIVIDE VAR-A
BY VAR-B
GIVING VAR-C
REMAINDER VAR-D.
DISPLAY 'VAR-A: 'VAR-A.
DISPLAY 'VAR-B: 'VAR-B.
DISPLAY 'VAR-C: 'VAR-C.
DISPLAY 'VAR-D: 'VAR-D.
********************************************
RESULTS:
VAR-A: 00000021320
VAR-B: 00000001000
VAR-C: 00000002132
VAR-D: 000
答案 0 :(得分:4)
问题是你已经在小数点后用2位数定义了接收变量VAR-C
。我想你想要整数除法,所以尝试按如下方式定义:
01 VAR-C PIC S9(09) COMP-3.
现在VAR-C
只能保存整数(例如21),余数(VAR-D
)将包含残差(例如3.20)
答案 1 :(得分:1)
这可能有所帮助,有人遇到了类似的问题: