el-inpu 値の精度損失の問題: el-inpu 値 * 100 単位換算で小数点以下の桁が多く表示される

この要件は検索機能から来ています。ページ上のデータの単位は m で、サーバーはそれを cm で受け取ります。元々は *100 をサーバーに送信するだけでした。その結果、受験生は次のようなゴーストを発見しました。バグ:

 

誰もが知っているように、js では 0.1+0.2!==0.3 になります。js は倍精度浮動小数点を使用するためコンピューターに保存されているデータのエンコードでエラーが発生します。

 

この問題の要求は、ユーザーが小数点以下 2 桁を入力できるようにすることです。プロジェクトには、入力を 2 桁のみに制限するカスタム コマンドがあります。トラブルシューティングを行うと、入力された小数点以下 2 桁が入力された場合にのみ問題が発生することがわかります。が 5 より大きい場合、上記のゴースト バグが表示されます。たとえば、(15.99) などです。(15.33) にはこの種の問題は発生しません...、私はオンラインに行きたくて、Math.round( で問題を解決しまし)値 * 100) 。

次に、小数点以下 2 桁を保持するメソッドを記録します。

fomatFloat(src) { 
      return Math.round(src * Math.pow(10, 2)) / Math.pow(10, 2); 
    }

上の数字 2 は、繰り上げて再パッケージ化できる桁数と、保持して送信する必要がある 10 進数の桁数です。

それを覚えて、バグを修正してください。

おすすめ

転載: blog.csdn.net/m0_58481462/article/details/126585030