« ドロップダウン(ComboBox)をリードオンリー(ReadOnly)に | トップページ | IT用語中国語 »

2007年5月20日 (日)

切捨て、切り上げ

COBOL
 切り捨て:MOVE,COMPUTEなどの受け側のデータ項目の少数桁を1つ少なくしておけばは標準で切り捨てとなり意識する必要は有りません。
 切り上げ:COBOLには切り上げ命令はありません。コーディングが必要です。基本的には少数点第一位を切り上げするとき0.9を加算し、整数データ項目に転記すればできます。
例)
 01 A PIC S99.
  01 B PIC S99V9.

     COMPUTE A = B + 0.9

例2)しかし、例1では負数の切り上げを処理できません。COBOL的にはIF文を使わず一行でコーディングします。

負数のときは-0.9を加算する。

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 D PIC S9V9.
       01 A PIC S9.
       PROCEDURE DIVISION.
           DISPLAY SPACES.
           PERFORM VARYING D FROM -0.9 BY 0.1 UNTIL D > 0.9
               COMPUTE A = D + (FUNCTION ABS(D) / D) * 0.9
               DISPLAY "切り上げ(" D ")=" A
           END-PERFORM
           STOP RUN.

結果

切り上げ(09-)=1-
切り上げ(08-)=1-
切り上げ(07-)=1-
切り上げ(06-)=1-
切り上げ(05-)=1-
切り上げ(04-)=1-
切り上げ(03-)=1-
切り上げ(02-)=1-
切り上げ(01-)=1-
切り上げ(00+)=0+
切り上げ(01+)=1+
切り上げ(02+)=1+
切り上げ(03+)=1+
切り上げ(04+)=1+
切り上げ(05+)=1+
切り上げ(06+)=1+
切り上げ(07+)=1+
切り上げ(08+)=1+
切り上げ(09+)=1+

VB.NET
切り上げ Math.Ceiling(A) 負数時のコーディングが必要
切り捨て Math.Floor(A)      同上

例)-0.9から+0.9までの数値の小数点以下一位を切り上げ・切り捨てし画面表示する。

’絶対値化しCeiling(Floor)を実行、+、-の符号を復元する。
Module Module1
    Sub Main()
        '.ToStringは文字列変換の関数
        For f As Decimal = -0.9D To 0.9D Step 0.1D
            Console.WriteLine("切り上げ(" + f.ToString + ")=" _
            + (Math.Sign(f) * Math.Ceiling(Math.Abs(f))).ToString)
        Next
        For f As Decimal = -0.9D To 0.9D Step 0.1D
            Console.WriteLine("切り捨て(" + f.ToString + ")=" _
            + (Math.Sign(f) * Math.Floor(Math.Abs(f))).ToString)
        Next
    End Sub
End Module

結果

切り上げ(-0.9)=-1
切り上げ(-0.8)=-1
切り上げ(-0.7)=-1
切り上げ(-0.6)=-1
切り上げ(-0.5)=-1
切り上げ(-0.4)=-1
切り上げ(-0.3)=-1
切り上げ(-0.2)=-1
切り上げ(-0.1)=-1
切り上げ(0.0)=0
切り上げ(0.1)=1
切り上げ(0.2)=1
切り上げ(0.3)=1
切り上げ(0.4)=1
切り上げ(0.5)=1
切り上げ(0.6)=1
切り上げ(0.7)=1
切り上げ(0.8)=1
切り上げ(0.9)=1

切り捨て(-0.9)=0
切り捨て(-0.8)=0
切り捨て(-0.7)=0
切り捨て(-0.6)=0
切り捨て(-0.5)=0
切り捨て(-0.4)=0
切り捨て(-0.3)=0
切り捨て(-0.2)=0
切り捨て(-0.1)=0
切り捨て(0.0)=0
切り捨て(0.1)=0
切り捨て(0.2)=0
切り捨て(0.3)=0
切り捨て(0.4)=0
切り捨て(0.5)=0
切り捨て(0.6)=0
切り捨て(0.7)=0
切り捨て(0.8)=0
切り捨て(0.9)=0

お役に立てましたか?
IT、プログラミングのランキングサイトはこちらです。

にほんブログ村 IT技術ブログへ 人気blogランキングへ FC2 Blog Rankingへ


最新記事の自動受信登録はこちらです。

はてなRSSに追加

livedoor Readerに追加
My Yahoo!に追加
Googleに追加
goo RSSリーダーに追加

|

« ドロップダウン(ComboBox)をリードオンリー(ReadOnly)に | トップページ | IT用語中国語 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/279803/6313606

この記事へのトラックバック一覧です: 切捨て、切り上げ:

« ドロップダウン(ComboBox)をリードオンリー(ReadOnly)に | トップページ | IT用語中国語 »