ここで奇妙な問題が発生しています。列に巨大な値が格納されているデータベース テーブルがあります。私のアプリケーション (C#) は、この値を読み取り、double型に保持しています。このアプリケーションは、同じ値を別のテーブルに挿入します。注:最初のテーブルから読み取った値に対して計算/処理を行っていません。2 番目のテーブルを更新するために保持されます。
ここでの問題は、2 番目のテーブルが最初のテーブルとはわずかに異なる値を取得していることです。double型にしておくと数字が四捨五入されているようです。
値の例を次に示します。
元の値: 18014398509481984
新しいテーブルにコピーされた値: 18014398509482000
値は異なって見えますが、実際には両方とも同じです。検索語として18014398509481984 - 18014398509482000を使用して Google 検索を行ったところ、結果0が返されました。これは、両方が同じであることを意味します。
質問:
1 - 両方が同じ場合、2 番目の値が異なって見えるのはなぜですか? 1984 年が2000年に変わったことがわかります。
2 - コンバージョンが発生する理由
3 - この種の変換を回避するにはどうすればよいですか?
どんな助けでも素晴らしいでしょう!