SQL Server でアプリの結果を検証するため、Viewと関数とで検証プログラムのようなものを作っている。
金額の計算をしているのだが、割引率をfloat型で持たせている。その掛け率を使うと、希に計算結果が1円ずれる事があった。例えば 10000 に 0.85 を掛け、1円単位になるよう切り捨てると 8500 ではなく 8499になったり・・である。おそらく、内部的に 0.8499999999999などで持っているのだろう。
結局、文字型に変え、整数を掛けた後に桁数を合わせる割り算をした。例えば 0.85 の場合。0.85は 85 ÷ 100 と表現できるので、その形に変換する。ただし、いったん 0.85 を数字から文字に変換し、確実に 0.85 と認識させた上で行う、とした。
他、いろいろ試したが、これが一番確実であった。
そもそも floatで持つのが間違いなのかも知れないが、パッケージソフト上そう持っているのでやむを得ない・・。
まあ、これで狂わずに計算できる運びとなった。
金額の計算をしているのだが、割引率をfloat型で持たせている。その掛け率を使うと、希に計算結果が1円ずれる事があった。例えば 10000 に 0.85 を掛け、1円単位になるよう切り捨てると 8500 ではなく 8499になったり・・である。おそらく、内部的に 0.8499999999999などで持っているのだろう。
結局、文字型に変え、整数を掛けた後に桁数を合わせる割り算をした。例えば 0.85 の場合。0.85は 85 ÷ 100 と表現できるので、その形に変換する。ただし、いったん 0.85 を数字から文字に変換し、確実に 0.85 と認識させた上で行う、とした。
他、いろいろ試したが、これが一番確実であった。
そもそも floatで持つのが間違いなのかも知れないが、パッケージソフト上そう持っているのでやむを得ない・・。
まあ、これで狂わずに計算できる運びとなった。