jyamira1 さん
返信ありがとうございます。
ご教示いただいたフォーラムに投稿いたします。
今後ともよろしくお願いいたします。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
初めて投稿します。
投稿するサイトが正しいかわかりませんが、もし間違っていたらどのサイトに
投稿すればよいかご教示願います。
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でも理論と一致する丸めを行っているデータもあり、
④の計算式のデータのみ一致しません。
何が原因なのかご教示頂けないでしょうか?
どうぞ、よろしくお願いいたします。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
MSコミュニティーは一般コンシューマー向けのサイトですので以下がよいかと思います。