質問 今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そこで、次の関数に似たステートメントを書いたのですが、取得したデータは小数点以下 4 桁で、通常は 2 桁しか必要ありません。 データの検索と精度変換を続けます。しばらく検索した後、データに満足できませんでした。テストを続けます テスト バグや未知の状況をテストするときは、再現を最小限に抑え、テストを合理化し、他のステートメントが結果に干渉しないようにする必要があります。
また、3/4 台のデバイスで実行され、異なる MySQL バージョン環境でも同じ結果が得られます。 したがって、MySQL では、乗算と除算の小数点以下の精度が異なることがわかります。 国内のフォーラムでは適切な情報が見つからなかったので、海外のフォーラムに行って情報を探したり、質問したり、コミュニケーションをとったりしました。 答え まずは、他の先輩方の回答とアドバイスに感謝したいと思います。また、問題のトラブルシューティングを可能な限り詳細に記録します。 文明は記憶を持っているからこそ生き残るのです。この記事がより多くの友人の役に立つことを願っています。
テスト
控訴の結論と一致します。ご指導いただいた外国人の先輩方に感謝いたします。 除算は2桁の精度を使用します 問題を解くためにどうしても除算を使用する必要がある場合は、精度を変換する関数を使用できます。
DECIMAL のパラメータは Baidu で調べることができます。基本的にテーブル構造を作成したことがある人なら誰でも理解できます。 @x と @y は除数と被除数です。 同時に、SQL で毎回関数計算を使用しなくても済むように、MySQL でデフォルトの除算精度を設定できるかどうかも疑問に思いました。 先輩の回答: 予期しない状況が時々発生するのを避けたい場合は、毎回型変換を強制する必要があります。 MySQL関連のドキュメント https://dev.mysql.com/doc/refman/8.0/en/算術関数.html
除算の精度ルール 上記の文献から、2 つの数値を計算に使用する場合、結果の精度は最初のオペランドの精度 + システム変数 div_precision_increment の値によって決まることがわかります。たとえば、この例の 1 の精度は 0 であり、システム変数の精度はデフォルトで 4 桁であるため、結果は 4 桁の精度になります。
したがって、デフォルトの変数を変更することで、除算のデフォルトの精度を変更することもできます。 今テストする
要約する MySQL の乗算と除算の精度の不一致、および除算後の小数点以下 4 桁に関するこの記事はこれで終わりです。MySQL の乗算と除算の精度に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: nginxリバースプロキシによるセッション障害の問題の解決策
Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...
序文先ほどのプロジェクトを参考にすると、環境は整いました。プロジェクトの準備と検証の段階で、問題が発...
目次親コンポーネントと子コンポーネント間でパラメータを渡すルーティングパラメータステータスの改善コン...
アンカータグの使用法:同じドキュメント内の特定の場所にリンクすることをアンカー リンクと呼びます。ア...
実際、この効果を実現するのは非常に簡単で、この効果は特殊効果と呼ぶことすらできません。次のコードを ...
目次1. toStringメソッドの3つの機能2. オブジェクトを表す文字列を返す3. カスタム t...
これを理解するおそらく、他のオブジェクト指向プログラミング言語でもthis見たことがあり、これがコン...
写真といえば、まず背景画像が思い浮かびます。私たちの装飾の多くは背景画像を使用して実現されているから...
今日は、スライドを使用する原理に似た、Taobao のフロントエンドのマウス ズーム効果に慣れました...
仕事ではリモート サーバーが必要になることが多く、次の 2 つの問題に遭遇することがよくあります。 ...
最近の要件:グローバルロード、すべてのインターフェースはロード待機機能を表示するかどうかを手動で制御...
概要ボリュームは、さまざまなストレージ リソースを抽象化および仮想化したものです。ストレージ リソー...
目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...
最初のステップは、アイコン作成ソフトウェアを準備することです。まず、いわゆるアイコンは拡張子 .ic...
一緒に学びましょう1. 伝統的な方法コードをコピーコードは次のとおりです。 <object c...