次の計算を実行するアルゴリズムがあります。
- ( ( 0.50 * 0 ) + 7 ) / 10 = 0.70
- ( ( 0.70 * 10 ) + 9 ) / 20 = 0.80
- ( ( 0.80 * 20 ) + 7 ) / 30 = 0.7666666667 -> この値を0.76に切り捨てたい
残りの計算に次のように入力できるようにします。
4a. ( ( 0.76 * 30 ) + 8 ) / 40 = 0.77
また、小数点以下 2 桁を切り上げて0.77として入力しないようにします。
4b. ( ( 0.77 * 30 ) + 8 ) / 40 = 0.77
****以下は失敗したようで、代わりに 0.77 への切り上げを強制します:****
PHP の sptrinf() 関数: PHP は小数点以下を切り上げずに削除します
PHP number_format() 関数: PHP: 数値を小数点以下 2 桁まで表示する
PHP floor() 関数: PHP で浮動小数点数を切り捨てる
- 別の方法はありますか?
- PHPで私が望むもの(小数点以下2桁まで切り捨て)を達成することはまったく可能ですか?
手伝ってください。どうもありがとう。
更新 - 解決済み OK、dkamins と zneak のおかげで現在動作しています。私は floor() アプローチを使用しました (過去に正しいことをしていなかったと思います)。ただし、次のことが起こります。
例えば
(0.86 * 30) + 9 ) / 40 = 0.87 (そうあるべきです)、TRUNC 後は = 0.86
0.87 を 0.86 に切り捨てる方法は? 意味がない。小数点以下が 2 桁を超える場合にのみ切り捨てる方法はありますか?
解決済み:
$numDecPlace = strlen(substr(strrchr($newRel, "."), 1));
echo '<p>Test: Number of decimal places=' .$numDecPlace. '</p>';
if($numDecPlace > 2) {
$newRel = floor($newRel * 100) / 100; // Truncate to 2dp.
echo '<p>Test: New relationship truncated is $newRel=' .$newRel. '</p>';
}