質問
PHPで数値を最も近い10に丸めるにはどうすればよいですか
23
がある場合、それを 30
に丸めるにはどのコードを使用しますか?
解決
floor()
はダウンします。
ceil()
が上がります。
round()
はデフォルトで最も近くに移動します。
10で除算し、ceilを実行してから、10を乗算して有効数字を減らします。
$number = ceil($input / 10) * 10;
編集:私は長い間この方法でやってきた..しかし、TallGreenTreeの答えはきれいです。
他のヒント
round($number, -1);
これにより、$ numberが最も近い10に丸められます。丸めモードを変更する必要がある場合は、3番目の変数を渡すこともできます。
実際には、最も近い変数に丸めることができる関数を検索していましたが、このページは検索で表示され続けました。だから、ついに自分で関数を書くことになったとき、他の人が見つけられるようにここに投稿すると思った。
関数は最も近い変数に丸めます:
function roundToTheNearestAnything($value, $roundTo)
{
$mod = $value%$roundTo;
return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}
このコード:
echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';
Will出力:
1230
1235
1230
1169
この質問には多くの回答がありますが、おそらくすべてがあなたが探している答えをあなたに与えるでしょう。しかし、@ TallGreenTreeが言及しているように、これには関数があります。
しかし、@ TallGreenTreeの答えの問題は、切り上げられず、最も近い10に切り上げられることです。これを解決するには、数値に +5
を追加して切り上げます。切り捨てる場合は、 -5
を実行します。
コード内:
round($num + 5, -1);
切り上げには roundモード
を使用できません。これは、整数ではなく小数部のみを切り上げるためです。
最も近い 100
に切り上げたい場合は、 +50
を使用する必要があります。
10で除算してからceilを使用し、10で除算する
試す
round(23、-1);
「チート」することができます;とのラウンド経由
$rounded = round($roundee / 10) * 10;
また、浮動小数点除算を避けることができます
function roundToTen($roundee)
{
$r = $roundee % 10;
return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}
編集: round
が&quot; negative&quot;をサポートするようになったことを知りませんでした(そして、サイトで詳しく説明されていません)。より正確に使用できるようになります
$round = round($roundee, -1);
再度編集:常に切り上げたい場合は、試してみてください
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
これを試してください:
ceil($roundee / 10) * 10;
最も近い10に切り捨ててから、10を追加します。
round($num, -1) + 10
最初の衝動は、Googleで「php math」を検索することでした。そして、「round()」というコア数学ライブラリ関数があることを発見しました。それはおそらくあなたが望むものです。
生のSQLで、php、java、pythonなどを使用せずに実行したい人向け
SET SQL_SAFE_UPDATES = 0;
UPDATE db.table SET value = ceil(value / 10)* 10ここで、値は「%0」とは異なります;
最大桁の次の数値に切り上げたい(その名前はありますか?)ため、次の関数を(phpで)作成しました:
//Get the max value to use in a graph scale axis,
//given the max value in the graph
function getMaxScale($maxVal) {
$maxInt = ceil($maxVal);
$numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
$dividend = pow(10,$numDigits);
$maxScale= ceil($maxInt/ $dividend) * $dividend;
return $maxScale;
}
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function
function roundToTheNearestAnything($value, $roundTo,$type='round')
{
$mod = $value%$roundTo;
if($type=='round'){
return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}elseif($type=='floor'){
return $value+($mod<($roundTo/2)?-$mod:-$mod);
}elseif($type=='ceil'){
return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);
}
}
echo roundToTheNearestAnything(1872,25,'floor'); // 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil'); // 1875<br>
echo roundToTheNearestAnything(1872,25,'round'); // 1875
これは、PHPの「 fmod 」関数を使用して簡単に実現できます。以下のコードは10に固有ですが、任意の番号に変更できます。
$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;
出力:100
これを試してください...丸める数値を渡すと、最も近い10分の1に丸められます。
round($ num、1);