さらに調査した結果、すべては次のようになります。
(decimal)((object)my_4_decimal_place_double_value_20.9032)
2回キャストすると、20.903199999999998になります
Math.Round(...)
値が20.9032であるため、小数点以下4桁に丸められるdouble値があります
私の開発環境ではそのまま表示されます。
しかし、リリースされた環境では、20.903199999999998 と表示されます。
後に操作はありませんでしたMath.Round(...)
が、値がコピーされて割り当てられました。
これはどのように起こりますか?
更新: データは DB から読み込まれません。
からの戻り値Math.Round()
は、元の double 変数に割り当てられます。
この情報が役立つ場合、リリースと開発は同じアーキテクチャです。