次の方法で共有

VB6.0をVB.NETにコンバージョンしたRound関数の丸めについて

Anonymous
2015-04-10T10:56:29+00:00

初めて投稿します。

投稿するサイトが正しいかわかりませんが、もし間違っていたらどのサイトに

投稿すればよいかご教示願います。

VB6.0のプログラムをVB.NET2012にコンバージョンしています。

あるプログラムの中で使用しているRound関数の取り扱いでVB.6.0とVB.NET2012の実行結果が異なる結果となり、

原因がわからないので、投稿しました。

<実行環境>

OS:Windows7

<問題のソース>

①VB6.0

 cKi1_Mny = Round((lc_Keisu / 1000) * cTNK, 0)

②VB.NET2012(コンバージョン後)

 cKi1_Mny = System.Math.Round((lc_Keisu / 1000) * cTNK, 0)

③上記①②の変数の値

 lc_Keisu = 32550

 cTNK = 250

④計算式

 8137.5 = (32550 / 1000) * 250

⑤Round関数の仕様:中間値は偶数に近い方にまとめる

 よって理論上は、8138の値になるのが正しい。

⑥実行結果

 VB6.0 ・・・・・・・ パターン1:ソースからデバッグ実行した場合⇒8138となる(理論と一致する)

                       パターン2:EXEから実行した場合⇒8137となる(理論と一致しない)

 VB.NET2012・・・ パターン3:EXEから実行した場合⇒8138となる(理論と一致する)

                       パターン4:ソースからデバッグ実行した場合⇒8138となる(理論と一致する)

<質問>

なぜ、パターン2の場合だけ、理論と一致しないのかで困っています。

ただし、1320件あるデータのうちパターン2でも理論と一致する丸めを行っているデータもあり、

④の計算式のデータのみ一致しません。

何が原因なのかご教示頂けないでしょうか?

どうぞ、よろしくお願いいたします。

家庭向け Windows | 以前の Windows バージョン | アプリ

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-04-11T04:46:19+00:00

    jyamira1 さん

    返信ありがとうございます。

    ご教示いただいたフォーラムに投稿いたします。

    今後ともよろしくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2015-04-11T00:27:29+00:00

    MSコミュニティーは一般コンシューマー向けのサイトですので以下がよいかと思います。

    TechNetフォーラム

    https://social.technet.microsoft.com/Forums/ja-jp/home

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません