3

0.5 の場合はそのままにして、0.5 未満は切り捨て、0.5 を超えるものは切り上げることができますか?

例えば:

  • 5.0 * 1.35 = 6.75 // leave it
  • 5.2 * 1.35 = 7.02 // round down to 7.00
  • 5.5 * 1.35 = 7.56 // round up to 8.00

round($n,0, PHP_ROUND_HALF_UP)$n は上記の calc の積で、6.75 のままですが、次の calc では 7.02 を返します。round($n,-1, PHP_ROUND_HALF_UP)また、2番目の計算で7.00を取得しようとしましたが、もちろん最初の計算では6.75を返さず、代わりに680を返します.

これは、ユーザーが最初の数値を入力し、2 番目の数値を乗算するチケット マークアップ計算です。彼らはそれを見たくないので、私は実際に小数を削除し、結果に対してこの種のカスタマイズされた丸めを望んでいます。

4

3 に答える 3

1

PHPで特定の浮動小数点数のゼロ以外の最後の桁の値を決定する唯一の方法は、それを文字列に変換することです。

$str = (string) $float;
$result = ($str[strlen($str) - 1] == 5) ? $float : round($float);

もちろん、何をしても、浮動小数点の精度の問題のため、わずかな許容誤差が発生します。

于 2012-06-08T16:36:51.043 に答える
1
function myround($num, $prec) {
  $rhu = round($num, $prec, PHP_ROUND_HALF_UP);
  $rhd = round($num, $prec, PHP_ROUND_HALF_DOWN);

  return ($rhu + $rhd) / 2;
}

任意の精度で動作します。例のように、百の位は$prec2 にする必要があります。

于 2012-06-08T16:48:00.387 に答える
0
$n = round($n, 2);
if($n % .05 != 0 || $n % .1 == 0)
{
  $n = round($n);
}

これはうまくいきますか?あなた5が話しているのは100桁目だと思います。そうでない場合5は、整数が必要です。

于 2012-06-08T16:38:12.673 に答える