سؤال

كيف يمكننا جولة قبالة عدد إلى أقرب 10 في php?

أقول لقد 23, ما رمز استخدم على الجولة قبالة 30?

هل كانت مفيدة؟

المحلول

وfloor() سوف تنخفض.

وceil() سوف ترتفع.

وround() سوف تذهب إلى أقرب افتراضيا.

والقسمة على 10، تفعل سقف، ثم ضرب من قبل 10 للحد من الأرقام المعنوية.

$number = ceil($input / 10) * 10;

تحرير: لقد تم القيام به على هذا النحو لفترة طويلة .. ولكن الجواب TallGreenTree هو أنظف

.

نصائح أخرى

round($number, -1);

وهذا من شأنه تقريب عدد $ إلى أقرب 10. يمكنك أيضا تمرير متغير ثالث إذا لزم الأمر لتغيير وضع التقريب.

ومزيد من المعلومات هنا: http://php.net/manual/en/function. round.php

لقد كان في الحقيقة يبحث عن وظيفة يمكن أن جولة إلى أقرب متغير, و هذه الصفحة أبقى القادمة في عمليات البحث.حتى عندما كنت أخيرا انتهى من كتابة وظيفة نفسي فكرت بعد ذلك هنا من أجل الآخرين للعثور على.

الدالة جولة إلى أقرب متغير:

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>';

سيتم إخراج:

1230
1235
1230
1169

وهناك العديد من anwers في هذا السؤال، وربما كل سيعطيك الإجابة التي تبحث عنها. ولكن كما يذكرTallGreenTree، هناك وظيفة لهذا الغرض.

ولكن المشكلة من إجابة لTallGreenTree هو أنه لا جمع، وجولات إلى أقرب 10. لحل هذه المشكلة، إضافة إلى +5 رقمك من أجل محاصرة. إذا كنت ترغب في تقريبه، لا -5.

وهكذا في التعليمات البرمجية:

round($num + 5, -1);

وأنت لا يمكن استخدام round mode لإلقاء القبض على، لأن ذلك جولات فقط حتى كسور وليس الأعداد الصحيحة.

إذا كنت تريد تقريبه إلى أقرب 100، يمكنك استخدام فهذه +50.

div بنسبة 10 ثم استخدام سقف ثم بنسبة 10 mult

http://php.net/manual/en/function.ceil.php

وحاول

وround(23, -1);

ويمكننا أن "الغش" من خلال جولة مع

$rounded = round($roundee / 10) * 10;

ويمكننا أيضا تجنب الذهاب من خلال تقسيم نقطة عائمة مع

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

وتحرير: لم أكن أعرف (وانها ليست موثقة جيدا على الموقع) أن round يدعم الآن "سلبية" الدقة، بحيث يمكنك استخدام أكثر سهولة

$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 ل "الرياضيات فب" واكتشفت أن هناك وظيفة مكتبة الرياضيات الأساسية يسمى "جولة ()" من المرجح هو ما تريد.

وبالنسبة للأشخاص الذين تريد ان تفعل ذلك مع SQL الخام، من دون استخدام PHP، جافا، بيثون الخ SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';

وكنت أرغب في تقريبه إلى الرقم التالي في أكبر مكان سيارة (هناك اسم لذلك؟)، لذلك جعل الدالة التالية (في بي):

//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

وهذه محاولة ...... تمر في الرقم المراد تقريبها، وسوف تختم إلى أقرب tenth.hope أنه يساعد ....

وجولة ($ الأسطوانات، 1)؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top