270 × (110 / 108)という計算を行いたいと思い、以下の3つを試してみました。
1と2については、「110 / 108」の丸めの桁数が違うので結果に差が出ることは分かるのですが、1と3が同じになる理由が分かりません。
なぜなのでしょうか…?
1.割られる数をfloat型に変換する
select 270 * cast(110 as float) / 108
→結果は「275」になります。
2.割られる数に1.0をかける
select 270 * (110 * 1.0 / 108)
→結果は「274.999999999999995」になります。
3.割られる数をdecimal型に変換する
select 270 * cast(110 as decimal) / 108
→結果は「275」になります。
補足
1の「cast(110 as float) / 108」の部分を実行すると、「1.01851851851852」になります。
2の「110 * 1.0 / 108」の部分を実行すると、「1.0185185185185185」になります。
3の「cast(110 as decimal) / 108」の部分を実行すると、「1.0185185185185185」になります。
なので、2と3が同じになると思ったのですが1と3が同じ結果になって疑問に思っています。
環境
PostgreSQL 9.2.23

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/29 06:25