C#とCOBOLの10進丸め

JB06

お金を扱う計算を行うC#のCOBOLプログラムを書き直しています。ただし、最初の計算の一部から、小数点以下の四捨五入の一部がオフになっています(COBOLプログラムの計算と一致しません)。

Decimal.Round(19.87 * 2.57, 2) C#で51.07(51.0659)を返します。

COMPUTE varA = 19.87 * 2.57 COBOLで51.06を返します

ここで、COBOLは数値を切り捨てますが、それ以外の場合は、C#が切り捨てる場所で切り上げます。私は途方に暮れています。

これは私がしなければならない最初の計算の1つであるため、数値が大きくなると、COBOL出力とはますます異なります。(数値をテストしているという報告があります。)

両方のクラスのMath.RoundとFloorとCeilingを試して、無駄に見えるはずの出力を取得しました。

更新:私は自分の問題が何であるかを見つけました。COBOLプログラムの計算で使用されるフィールドの多くは、小数点以下9桁でしたが、結果は小数点以下2桁のフィールドに保管されていました。私は、切り捨てる前ではなく、切り捨てた後に計算を行っていました。皆さんの助けに感謝します!すべての答えが役に立ちました!

ビル・ウッダー

表示されているCOBOLCOMPUTEは、単純に切り捨てられています(切り捨て)。中間結果は小数点以下2桁で保持され、電卓を使用した場合に予想される超過値は単純に消えます。

新しいプログラムの動作でそれを複製しないと、数値と一致しません。

COBOLプログラムがあることはもちろん可能であるべきで丸めことが、あなたはそれに見て誰かを取得する必要があります。

COMPUTE varA ROUNDED = 19.87 * 2.57

中間結果は小数点以下3桁になるため、51.07になります。その場合、小数点以下第3位が5〜9の場合、小数点以下第2位が1増加し、その場合にのみ結果が切り捨てられます。

正しい値を決定するには、ある場合COMPUTEとない場合の違いROUNDEDが重要であることに注意してください。さらに2つのCOBOL動詞があることにも注意してください、DIVIDEそしてMULTIPLY自然とないデータに応じて、異なる動作を考えています、ROUNDEDその点に注意してくださいADDSUBTRACTどこ小数点以下の異なる数が関与しているにもだろう...

また、COMPUTEが複雑であるほど、実際に使用されている中間値を考慮せずにコーディングされている可能性が高いことにも注意してください。たとえば、次の2つを参照してください。COBOLCOMPUTE計算AS / 400:COMPUTE関数の使用、異なるフィールド定義での一貫性のない結果

また、現在のCOBOL標準は1985標準であり、組み込み関数の1989の修正と拡張が行われていることにも注意してください。新しい標準は完全ではなく、その中の新しい要素は一部のコンパイラで実装されていますが、さまざまなタイプの丸めの定義を実装しているものは多くありません。とにかくROUNDEDがないと、「切り捨て」られます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#での10進丸め

分類Dev

10進数の分から時間+ C#の丸め

分類Dev

TSQLの丸めとC#の丸め

分類Dev

10進値の丸め

分類Dev

C#での大きな10進数値から小さな10進数値への丸め

分類Dev

10進数が関数に渡されたときのC ++の奇妙な丸め

分類Dev

カスタム丸め10進数c#

分類Dev

10進数の丸めとプリンターの選択

分類Dev

PHPの10進数の丸め方法

分類Dev

SQLの10進列の丸め合計

分類Dev

Javascriptの10進数の丸め

分類Dev

10進数の.99を丸めます

分類Dev

Javaの丸められた10進数

分類Dev

Javascriptの丸められた10進数

分類Dev

C#での10進数と10進数の違い

分類Dev

C#とPythonのフロート丸めの違い

分類Dev

C#10進形式123.123,44、丸めあり

分類Dev

Javaで10進数の値の後にceilまたは丸め

分類Dev

10進型を使用したSQLでの丸めの防止

分類Dev

特定の10進値による数値の丸め

分類Dev

Javaの10進数の丸めロジック

分類Dev

ToString()でフォーマットする場合の10進数とdoubleの丸めの差

分類Dev

JavaScriptの10進数を切り捨てる(丸めない)

分類Dev

Spark:データセットの10進数に丸める

分類Dev

動的変数を使用した10進値の丸め

分類Dev

T-SQL / SQL Server:変換後の丸め(10進数)SqlCommand

分類Dev

Rで特定の10進数に丸める方法

分類Dev

10進数を最小の整数に丸める方法は?

分類Dev

10進値に応じたSQLサーバーの丸め