質問 今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そこで、次の関数に似たステートメントを書いたのですが、取得したデータは小数点以下 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リバースプロキシによるセッション障害の問題の解決策
目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...
目次ヘッドレスブラウザとは何ですか?なぜ「ヘッドレス」ブラウザと呼ばれるのでしょうか?ヘッドレスブラ...
これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...
具体的な方法:まずコマンドプロンプトを開きます。次に、[ mysql -u root -p ] コマ...
目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...
Text の height 属性が定義されている場合、Text に入力されたテキストは垂直方向に中央...
既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...
Windows XP でフォルダーのプロパティ ダイアログ ボックスを使用すると、フォルダーの属性カ...
目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...
この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...
Docker はプロセスを中核としてシステムリソースを分離する管理ツールです。分離は、オペレーティン...
1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...
この記事では主に、次のように共有されるネイティブ JS 音楽プレーヤーのサンプル コードを紹介します...
LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...
プログラムは上から下へ順番に実行され、いくつかの制御文によって実行経路を変更することができます。制御...