কীভাবে আমরা পিএইচপি-র নিকটতম 10 এ কোনও সংখ্যাকে গোল করে দেখতে পারি?
বলুন আমার কাছে আছে 23
, আমি এটিকে বন্ধ করে দেওয়ার জন্য কোন কোড ব্যবহার করব 30
?
কীভাবে আমরা পিএইচপি-র নিকটতম 10 এ কোনও সংখ্যাকে গোল করে দেখতে পারি?
বলুন আমার কাছে আছে 23
, আমি এটিকে বন্ধ করে দেওয়ার জন্য কোন কোড ব্যবহার করব 30
?
উত্তর:
floor()
নিচে যেতে হবে।
ceil()
উপরে যাবে
round()
ডিফল্ট হিসাবে নিকটে যেতে হবে।
10 দ্বারা ভাগ করুন, সিলটি করুন, তারপরে উল্লেখযোগ্য সংখ্যাগুলি হ্রাস করতে 10 দিয়ে গুণ করুন।
$number = ceil($input / 10) * 10;
সম্পাদনা: আমি এত দিন ধরে এটি করে চলেছি .. তবে ট্যালগ্রিনট্রির উত্তর পরিষ্কার।
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
round($number, -1);
এটি $ সংখ্যার নিকটতম দশকে গোল করবে the রাউন্ডিং মোডটি পরিবর্তন করতে প্রয়োজনে আপনি একটি তৃতীয় ভেরিয়েবলও পাস করতে পারেন।
এখানে আরও তথ্য: http://php.net/manual/en/function.round.php
23
এটি হবে 20
এবং না 30
কারণ এটি সর্বদা নিকটতম 10 এর কাছে rond হবে The রাউন্ডিং মোডটি সাহায্য করবে না, যেহেতু এটি কেবলমাত্র গোলটি অর্ধেক পরে x.
।
আমি আসলে এমন কোনও ফাংশন সন্ধান করছিলাম যা নিকটতম ভেরিয়েবলের কাছে যেতে পারে এবং এই পৃষ্ঠাগুলি আমার অনুসন্ধানগুলিতে আসতে থাকে। সুতরাং যখন আমি শেষ পর্যন্ত নিজেই ফাংশনটি লেখার শেষ করেছি, আমি ভেবেছিলাম অন্যদের সন্ধানের জন্য এটি এখানে পোস্ট করব।
ফাংশনটি নিকটতম পরিবর্তনশীলকে গোল করবে:
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
এই প্রশ্নে অনেকগুলি উত্তর রয়েছে, সম্ভবত সবগুলিই আপনি যে উত্তরটি সন্ধান করছেন তা আপনাকে দেবে। তবে @ ট্যালগ্রিনটি ট্রি হিসাবে উল্লেখ করা হয়েছে, এটির জন্য একটি কার্য রয়েছে।
তবে @ ট্যালগ্রিনটিরির উত্তরের সমস্যাটি এটি গোল হয়ে যায় না, এটি কাছাকাছি দশে গোল করে solve এটি সমাধান করার +5
জন্য, আপনার সংখ্যাটিতে গোল করার জন্য যুক্ত করুন। যদি আপনি গোল হয়ে যেতে চান, না -5
।
কোডে তাই:
round($num + 5, -1);
আপনি round mode
রাউন্ড আপ করার জন্য ব্যবহার করতে পারবেন না কারণ এটি কেবলমাত্র ভগ্নাংশকেই ঘিরে এবং পুরো সংখ্যাটি নয়।
আপনি যদি নিকটতম পর্যন্ত গোল করতে চান তবে 100
আপনি চিৎকার করবেন +50
।
10 দ্বারা বিভাজন তারপর সিল ব্যবহার করুন 10 দ্বারা বহু
চেষ্টা করুন
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;
}
আমি বৃহত্তম অঙ্কের জায়গায় পরবর্তী সংখ্যাটি পেতে চেয়েছিলাম (এর জন্য কোনও নাম আছে?), তাই আমি নিম্নলিখিত ক্রিয়াটি তৈরি করেছি (পিএইচপি তে):
//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
এটি পিএইচপি ' fmod ' ফাংশন ব্যবহার করে সহজেই সম্পন্ন করা যায় । নীচের কোডটি 10 এর জন্য নির্দিষ্ট তবে আপনি এটি কোনও সংখ্যায় পরিবর্তন করতে পারবেন।
$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;
আউটপুট: 100
এটি চেষ্টা করে দেখুন ...... গোলটি বন্ধ করতে নম্বরটি পাস করুন এবং এটি নিকটতম দশমীতে পৌঁছে যাবে .hএই সাহায্য করে ....
বৃত্তাকার ($ সংখ্যা, 1);