PostgreSQL での除算 (/) の不正確さ
PostgreSQL で除算を実行する場合、正確な結果を保証するために関係するデータ型を考慮することが重要です。開発コストを回収するために販売するソフトウェアの数量を決定することが目的である上記のケースでは、整数の除算によって不正確な結果が生じる可能性があります。
提供されたクエリでは、dev_cost と sell_cost は両方とも整数型です。整数の除算では、結果がゼロに向かって切り捨てられます。つまり、16000 を 7500 で除算すると、予想される 3 ではなく 2 が得られます。
正確な結果を得るには、少なくとも 1 つの値を浮動小数点にキャストする必要があります。 float や 10 進数などの型。あるいは、::10 進数構文を使用して、dev_cost を明示的に暗黙的に 10 進数に変換することもできます。これにより、除算が浮動小数点演算に強制され、切り捨てられない除算が行われます。
次の変更されたクエリを検討してください。
select dev_cost::decimal / sell_cost from software ;
代わりに、ceil() 関数を使用することもできます。結果を最も近い整数に切り上げる:
select ceil(dev_cost::decimal / sell_cost) from software ;
これらの手法を利用すると、正確な除算結果を得ることができます。これにより、データベース クエリに基づくビジネス計算が確実に行われるようになります。
以上がPostgreSQL での不正確な整数の除算を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。