हम किसी संख्या को php के निकटतम 10 तक कैसे रोक सकते हैं?
कहो मेरे पास है 23
, मैं इसे बंद करने के लिए किस कोड का उपयोग करूंगा 30
?
हम किसी संख्या को php के निकटतम 10 तक कैसे रोक सकते हैं?
कहो मेरे पास है 23
, मैं इसे बंद करने के लिए किस कोड का उपयोग करूंगा 30
?
जवाबों:
floor()
नीचे जाएगा।
ceil()
ऊपर जाएगा।
round()
डिफ़ॉल्ट रूप से निकटतम में जाएगा।
10 से विभाजित करें, छत करें, फिर महत्वपूर्ण अंकों को कम करने के लिए 10 से गुणा करें।
$number = ceil($input / 10) * 10;
संपादित करें: मैं इसे इस तरह से लंबे समय से कर रहा हूं .. लेकिन TallGreenTree का जवाब साफ है।
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
round($number, -1);
यह $ 10. के निकटतम दौर में होगा। यदि आप राउंडिंग मोड को बदलने के लिए आवश्यक हो तो एक तीसरा चर भी पास कर सकते हैं।
अधिक जानकारी यहाँ: http://php.net/manual/en/function.round.php
23
होगा 20
और नहीं 30
क्योंकि यह हमेशा निकटतम 10. पर रौंद जाएगा। गोलाई मोड मदद नहीं करेगा, क्योंकि यह केवल आधा आधा, उसके बाद 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
इस सवाल में कई सारी अटकलें हैं, शायद सभी आपको वह जवाब देंगे जिसकी आपको तलाश है। लेकिन जैसा @TallGreenTree उल्लेख करता है, इसके लिए एक फ़ंक्शन है।
लेकिन @TallGreenTree के उत्तर की समस्या यह है कि यह गोल नहीं है, यह निकटतम 10. पर गोल है। इसे हल करने के लिए, +5
अपने नंबर को गोल करने के लिए जोड़ें । यदि आप नीचे चक्कर लगाना चाहते हैं, तो करें-5
।
तो कोड में:
round($num + 5, -1);
आप उपयोग नहीं कर सकते round mode
राउंड अप लिए , क्योंकि यह केवल भिन्न और पूर्ण संख्याओं के लिए नहीं है।
यदि आप नज़दीकी को गोल करना चाहते हैं 100
, तो आप उपयोग को कम कर सकते हैं +50
।
div 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;
}
मैं सबसे बड़ी अंकों वाली जगह में अगले नंबर तक पहुंचना चाहता था (क्या इसका कोई नाम है?), इसलिए मैंने निम्नलिखित फ़ंक्शन (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;
OUTPUT: 100
यह कोशिश करें ...... इसे बंद करने के लिए संख्या में पास करें और यह निकटतम दसवें के लिए बंद हो जाएगा। इससे मदद मिलती है ...।
दौर ($ संख्या, 1);