• 締切済み

COBOL初心者です

COBOL初心者です。 1月~6月の売上高の合計と、 半年の売上高の合計に対する各月の割合を表示するプログラムを作成しろという課題が出たのですが、実行してみたら合計の数字が違うのです。。。。 01 1月 PIC 9(8). 01 2月 PIC 9(8). 01 3月 PIC 9(8). 01 4月 PIC 9(8). 01 5月 PIC 9(8). 01 6月 PIC 9(8). 01 半年合計 PIC 9(9). 01 表示半年合計 PIC Z(9)9. 01 1月割合 PIC Z(2)9.99. 01 2月割合 PIC Z(2)9.99. 01 3月割合 PIC Z(2)9.99. 01 4月割合 PIC Z(2)9.99. 01 5月割合 PIC Z(2)9.99. 01 6月割合 PIC Z(2)9.99. ・  ・  ・ 合計を求めるCOMPUTE文  COMPUTE 半年合計 = 1月 + 2月 + 3月 + 4月 + 5月 + 6月. MOVE 半年合計 TO 表示半年合計. DISPLAY "合計売上高は" AT 1405. DISPLAY 表示半年合計 AT 1428. DISPLAY "円です。" AT 1436.  ・  ・  ・ 割合を求めるCOMPUTE文。 COMPUTE 1月割合 = (1月 / 半年合計) * 100. COMPUTE 2月割合 = (2月 / 半年合計) * 100. COMPUTE 3月割合 = (3月 / 半年合計) * 100. COMPUTE 4月割合 = (4月 / 半年合計) * 100. COMPUTE 5月割合 = (5月 / 半年合計) * 100. COMPUTE 6月割合 = (6月 / 半年合計) * 100. 実行結果 例えば、1月 00000100 ・  ・  ・  6月 00000100 と各月すべて100と入力したら、合計は6円です。という具合に実行結果が出ます。 どのように直せばよいでしょうか?

みんなの回答

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.2

割る前に掛ける 結構効きます 多分、全て整数演算されているような気がします というか、マニュアルで中間結果の精度がどのようになるのかしらべてみることをお勧めします…と書いたのですが、忘れてしまいました (後々、悩まずにすみます)

okayama_ss
質問者

お礼

回答ありがとうございます。 長々読んでいただきありがとうございます。 やてみましたがダメでした。。。。。 テキストを読めば読むほどわからなくなります・・・ 質問を書き直しました。 もしよければ、こちらで教えていただけませんか? http://question.excite.co.jp/qa3024973.html

  • Isamu_S
  • ベストアンサー率21% (25/116)
回答No.1

うる覚えですみませんが、 確か計算途中(内部的な)の位取りの問題で、 COMPUTE 6月割合 = (6月 / 半年合計) * 100 の『100』を『100.00』と小数点2桁で記述すれば内部的に桁が増えて桁落ちせず計算出来たと思います。

okayama_ss
質問者

お礼

回答ありがとうございます。 長々読んでいただきありがとうございます。 桁落ちと言うのですね! テキストでどのように探せばいいのか迷っていました。 ありがとうございます。 質問を書き直しました。 もしよければ、こちらで教えていただけませんか? http://question.excite.co.jp/qa3024973.html

関連するQ&A

専門家に質問してみよう