ホームページ > データベース > mysql チュートリアル > 切り捨てを避けるために、PostgreSQL で整数の除算の結果を正しく計算するにはどうすればよいですか?

切り捨てを避けるために、PostgreSQL で整数の除算の結果を正しく計算するにはどうすればよいですか?

DDD
リリース: 2024-12-17 10:39:24
オリジナル
201 人が閲覧しました

How Can I Correctly Calculate the Result of Integer Division in PostgreSQL to Avoid Truncation?

PostgreSQL での除算 ( / ) の計算ミス

PostgreSQL で整数除算の結果が不正確になる除算の問題が発生しています。背景を詳しく調べて、問題に対処する解決策を提供しましょう。

整数の除算を理解する

「/」で示される整数の除算は、商をゼロに向かって切り捨てます。これは、2 つの整数を除算するときに、結果が最も近い整数に切り捨てられることを意味します。

指定された例では、「dev_cost」と「sell_cost」は両方とも整数です。したがって、クエリ「select dev_cost / sell_cost」は、16000 を 7500 で割った整数である 2 を返します。ただし、dev_cost を回復するにはソフトウェアの量が必要で、これは 3.

計算問題を解く

正確な値を取得するには、次のことを確認する必要があります。除算内の少なくとも 1 つのオペランドが浮動小数点または 10 進数値であること。これにより、切り捨てが防止され、小数商が生成されます。

解決策の 1 つは、「CAST」演算子を使用して列の 1 つを 10 進数にキャストすることです。

select cast(dev_cost as decimal) / sell_cost from software ;
ログイン後にコピー

もう 1 つの代替案は、 dev_cost 列をキャストするための「::10 進数」構文:

select dev_cost::decimal / sell_cost from software ;
ログイン後にコピー

これらのアプローチの両方は、必要なソフトウェアの正確な量を表す浮動小数点の結果を返します。

最も近い整数への四捨五入

結果を最も近い整数に四捨五入する場合は、 dev_cost を回復するためのソフトウェアの最小量を表す整数。「CEIL」を使用できます。 function:

select ceil(dev_cost::decimal / sell_cost) from software ;
ログイン後にコピー

これにより、小数点以下の結果が次の整数に切り上げられ、開発コストをカバーするのに十分なソフトウェアが確実に販売されるようになります。

以上が切り捨てを避けるために、PostgreSQL で整数の除算の結果を正しく計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート