কীভাবে নিকটতম 10 এর সংখ্যাকে গোল করবেন?


100

কীভাবে আমরা পিএইচপি-র নিকটতম 10 এ কোনও সংখ্যাকে গোল করে দেখতে পারি?

বলুন আমার কাছে আছে 23, আমি এটিকে বন্ধ করে দেওয়ার জন্য কোন কোড ব্যবহার করব 30?


51
এর, এটি সবচেয়ে কাছের 10 নয়?
রোল্যান্ড শ

4
ঠিক আছে, তারপরে 1 টি উল্লেখযোগ্য চিত্রের পরে গোল! haha
tarnfeld

4
ফেয়ার হবে, শিরোনাম, এটা "বৃত্তাকার বলেছেন আপ একটি সংখ্যা নিকটতম 10", যদিও টেক্সট বলে "বৃত্তাকার বন্ধ" ... আমি নিশ্চিত তিনি সবসময় রাউন্ডে জিজ্ঞেস করছেন করছি আপ করতে পরবর্তী 10
হারুন ওয়ালেন্টাইন

4
10 ক্ষমতায় বৃত্তাকার আপ, stackoverflow.com/q/43932648/6521116
ক্রিস Roofe

উত্তর:


221

floor() নিচে যেতে হবে।

ceil() উপরে যাবে

round() ডিফল্ট হিসাবে নিকটে যেতে হবে।

10 দ্বারা ভাগ করুন, সিলটি করুন, তারপরে উল্লেখযোগ্য সংখ্যাগুলি হ্রাস করতে 10 দিয়ে গুণ করুন।

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

সম্পাদনা: আমি এত দিন ধরে এটি করে চলেছি .. তবে ট্যালগ্রিনট্রির উত্তর পরিষ্কার।


4
টালগ্রিনটিরির উত্তরটি সর্বদা এটি ইউপি-এর সাথে মিলিত হয় না। সিল () ব্যবহারের সাথে এই উত্তরটি সবচেয়ে সঠিক
ব্র্যান্ডন

4
টালগ্রিনট্রি এর উত্তরটি রাউন্ড () এর তৃতীয় প্যারামিটার (মোড) ব্যবহার করে রাউন্ড আপ / ডাউনকে সমর্থন করে। বৃত্তাকার ($ ইনপুট, -1, PHP_ROUND_HALF_UP)
ড্যারেন

4
@ ড্যারেনশচেঙ্কে, তৃতীয় পরম আপনার অনুমান হিসাবে বেশ কার্যকরভাবে কাজ করে না, যা কেবল বিরতিগুলির মধ্যে ঠিক অর্ধেকের ক্ষেত্রে নিয়ন্ত্রণ করে। (15,-1, PHP_ROUND_HALF_UP); // 20,(14,-1, PHP_ROUND_HALF_UP); // 10
আর্থ

170
round($number, -1);

এটি $ সংখ্যার নিকটতম দশকে গোল করবে the রাউন্ডিং মোডটি পরিবর্তন করতে প্রয়োজনে আপনি একটি তৃতীয় ভেরিয়েবলও পাস করতে পারেন।

এখানে আরও তথ্য: http://php.net/manual/en/function.round.php


11
যখন প্রশ্নটি দু'বার "নিকটস্থ 10 এর কাছাকাছি" হয়েছে তখন প্রশ্নকারীর অর্থ "নিকটস্থ 10 এর কাছাকাছি"?
ceejayoz

এই উত্তর পোস্টকারীকে প্রশ্নফেরা করার আগে পোস্ট করা হয়েছিল। আমি কেবল বুঝতে পেরেছিলাম যে তিনি প্রশ্নের মধ্যে সঠিকভাবে গোল করছেন না।
ব্যারেট

12
টালগ্রিনটি সঠিক। আপনি তৃতীয় যুক্তির সাহায্যে রাউন্ডিং মোডটি সেট করতে পারেন: "PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN, বা PHP_ROUND_HALF_ODD এর মোড একটি" "
d -_- বি

13
এটি সঠিক ফলাফল দেয় না। 23এটি হবে 20এবং না 30কারণ এটি সর্বদা নিকটতম 10 এর কাছে rond হবে The রাউন্ডিং মোডটি সাহায্য করবে না, যেহেতু এটি কেবলমাত্র গোলটি অর্ধেক পরে x.
টিমো 2002

4
দুঃখের বিষয় যে সিল () এবং মেঝে () এর এখনও সঠিক পরামিতি নেই have
স্কয়ারকাণ্ডি

15

আমি আসলে এমন কোনও ফাংশন সন্ধান করছিলাম যা নিকটতম ভেরিয়েবলের কাছে যেতে পারে এবং এই পৃষ্ঠাগুলি আমার অনুসন্ধানগুলিতে আসতে থাকে। সুতরাং যখন আমি শেষ পর্যন্ত নিজেই ফাংশনটি লেখার শেষ করেছি, আমি ভেবেছিলাম অন্যদের সন্ধানের জন্য এটি এখানে পোস্ট করব।

ফাংশনটি নিকটতম পরিবর্তনশীলকে গোল করবে:

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

কেনি, আপনি সেরা। আমি কেবল চাই যে আমার গ্রাফিক উপস্থাপনাটি কীভাবে একেবারে গোল হয়ে যায় তাই আমি নিশ্চিত যে এটি 100% ক্ষেত্রে প্রত্যাশিত ফলাফল দেয়। আমার ধারণা আমি কিছু পরীক্ষা করতে হবে।
স্লভা 11

রাউন্ড মোড HALF_UP / HALF_DOWN সহ তৃতীয় প্যারামিটার যুক্ত করার জন্য এই কোডটি সংশোধন করার কোনও উপায় আছে কি?
স্লভা 11

12

এই প্রশ্নে অনেকগুলি উত্তর রয়েছে, সম্ভবত সবগুলিই আপনি যে উত্তরটি সন্ধান করছেন তা আপনাকে দেবে। তবে @ ট্যালগ্রিনটি ট্রি হিসাবে উল্লেখ করা হয়েছে, এটির জন্য একটি কার্য রয়েছে।

তবে @ ট্যালগ্রিনটিরির উত্তরের সমস্যাটি এটি গোল হয়ে যায় না, এটি কাছাকাছি দশে গোল করে solve এটি সমাধান করার +5জন্য, আপনার সংখ্যাটিতে গোল করার জন্য যুক্ত করুন। যদি আপনি গোল হয়ে যেতে চান, না -5

কোডে তাই:

round($num + 5, -1);

আপনি round modeরাউন্ড আপ করার জন্য ব্যবহার করতে পারবেন না কারণ এটি কেবলমাত্র ভগ্নাংশকেই ঘিরে এবং পুরো সংখ্যাটি নয়।

আপনি যদি নিকটতম পর্যন্ত গোল করতে চান তবে 100আপনি চিৎকার করবেন +50


এটি দশমিক নম্বরের জন্য কাজ করে না। 10 হয়ে যায় 20
লুসিও



2

আমরা রাউন্ড দিয়ে "প্রতারণা" করতে পারি

$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;    
}

হাই, এটি নিখুঁতভাবে কাজ করে - এই প্রশ্নের জন্য, আমি কীভাবে ইউ.পি. তাই 23 থেকে 30?
টার্নফিল্ড



0

আমার প্রথম প্রেরণা ছিল "পিএইচপি গণিত" এর জন্য গুগল করা এবং আমি আবিষ্কার করেছি যে "গোল ()" নামে একটি মূল গণিত গ্রন্থাগার ফাংশন রয়েছে যা সম্ভবত আপনি চান।


0

যারা পিএইচপি, জাভা, পাইথন ইত্যাদি ব্যবহার না করে কাঁচা এসকিউএল দিয়ে এটি করতে চান তাদের জন্য SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';


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

0
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

0

এটি পিএইচপি ' fmod ' ফাংশন ব্যবহার করে সহজেই সম্পন্ন করা যায় । নীচের কোডটি 10 ​​এর জন্য নির্দিষ্ট তবে আপনি এটি কোনও সংখ্যায় পরিবর্তন করতে পারবেন।

$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;

আউটপুট: 100



-2

এটি চেষ্টা করে দেখুন ...... গোলটি বন্ধ করতে নম্বরটি পাস করুন এবং এটি নিকটতম দশমীতে পৌঁছে যাবে .hএই সাহায্য করে ....

বৃত্তাকার ($ সংখ্যা, 1);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.