問題タブ [bcmath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - bcmathはfloatを返すこともあれば、結果を丸めることもあります
$newTime
によって作成された秒単位の時間である変数があり、mktime()
それを日数に変換したいと思います。
この場合は終了し(1日の秒数)、日数(四捨五入)で86.400
割ってみます。86.400
しかし時々私は得る:
そして時折:
これはコードです:
bcmathを使用せず、通常のmath($newTime / (60*60*24)
)だけを使用すると、毎回浮動結果が得られます。
php - bcpowmodと同等のjavascript
PHPで作成したRSA暗号化をデコードできるJavaScriptバージョンをコーディングしています。bcpowmodに相当するjavascriptがないことを除いて、すべて正常に動作します。
他の関数にはPHPJSライブラリを使用しましたが、bcpowmodがありません。
次のようなデフォルトの数学演算子を使用すると、次のようになります。(pow(block、q))%rNANを取得します。
私のために働くことができる方法またはjsライブラリはありますか?
php - bc-math が機能しないのはなぜですか?
私の関数では、php bc-math を使用して精度を向上させたいと考えています。すべての操作を無駄に置き換えようとしました。これは float から string への変換の問題ですか?
php - フロートをdbからbcmath()で使用するように変換するか、またはbcmathを使用する方法を教えてください。
データベースクエリからいくつかの値を取得しています。私が得ている値は次のようになります。
10.810000000000000497
「10.81」だけを使いたいです。
また
2.6899999999999999467
そして私は2.69だけを使いたい
使用する場合ini_set('precision', 20)
;
たとえば、この値をbcadd()でどのように使用する必要がありますか?10.81 + 2.69を追加したいので?
php - BCMath を使用するときに 0 (ゼロ) をテストする一貫した方法はありますか?
以下を実行すると、N, Y, Y
.
2 番目の例では、float/double にキャストバックせず、 を にドロップせずに'0.00' != '0'
をテストする一貫した方法があるため、そうでない理由は理解しています。0
===
==
ノート
をドロップしたくないのはなぜ
===
ですか?
などの方法を使用して、より壮大なプロジェクトの一部として機能を提供しているget_total_cost()
場合、関数が数値を返すことを期待しているときに、他の開発者が厳密な比較をやめなければならないことは直感的ではないと思います。文字列として。
php - PHP bcdiv()は、大きな数でゼロ除算します
次のコードは、「警告:bcdiv()[function.bcdiv]:ゼロ除算...」を示します。
なぜこれが起こるのですか?
値を「」に入れても、警告は表示されません。
php - php.ini を使用して BCMath を有効にしますか?
BC Math を有効にする必要がありますが、主にそのルートを理解していないため、--enable-bcmath を使用して実行したくありません。
php.ini のみを使用してこれを行う方法はありますか?
php - PHPのお金の計算精度
データベースにお金をbigint列として保存するプロジェクトがあります(セントで保存)。代わりに BCMATH を使用するようにこれを書き直す予定です。私は整数を気にしませんが、セントで保存されたいくつかのひどい丸め誤差イベントを与えてくれます.BCMATHでも同じ丸め誤差があるのではないかと思います. 問題は、次の疑似コードのような状況で発生します。
データベースに挿入するときは、セント単位のすべての値に対して round() を実行します。そして今、私は次のような記録を持っています:
ここで 12134 - 460 を実行すると ... 明らかに 11675 ではなく 11674 が得られます。また、計算方法を変更した場合 (たとえば、最後にすべてに QTY を掛ける)、さらに異なる結果が得られるのではないかと思います。 .
BCMATH を使用すると、この種の動作が発生しますか? 結果は数学演算の順序に依存しますか? BCMATH を使用して上記を適切に計算し、DB に格納するにはどうすればよいでしょうか (小数点以下 2 桁が必要であると仮定します)。