2009-02-23 17 views
8

मेरे पास मेरे कोड में एक हिस्सा है जहां मुझे दशमलव जवाब के बजाय विभाजित करने और शेष करने की आवश्यकता है।php में शेष के साथ विभाजित?

मैं यह कैसे कर सकता हूं?

धन्यवाद

उत्तर

13

आप क्या आप "%" (मापांक) ऑपरेटर का उपयोग का वर्णन कर रहे हैं कर सकते हैं। निम्नलिखित कोड शेष के साथ विभाजित करने का एक उदाहरण है।

$remainder=$num % $divideby; 
$number=explode('.',($num/$divideby)); 
$answer=$number[0]; 
echo $answer.' remainder '.$remainder; 
+1

एक नाव प्रकार पर एक स्ट्रिंग समारोह का प्रयोग न करें। बेहतर 'मंजिल() 'का उपयोग करें। – Gumbo

+1

अंधेरे से फर्श का उपयोग कर नकारात्मक परिणाम पर असफल हो सकता है –

15
$quotient = intval($dividend/$divisor); 
$remainder = $dividend % $divisor; 

intvalfloor के बजाय का उपयोग करते हुए शून्य की ओर भागफल दौर होगा, सटीक परिणाम उपलब्ध कराने जब लाभांश नकारात्मक है।

+0

यदि नकारात्मक हो तो गलत परिणाम मिल सकता है, उदा। यदि लाभांश = 5 और divisor = 2 आप 2 –

+0

की बजाय 3 को गणना के रूप में गणना करेंगे हां, मैंने देखा कि जल्द ही 'फर्श' के बजाय 'अंतराल' का उपयोग करने के लिए मेरे उत्तर को पोस्ट करने और संशोधित करने के बाद। –

+0

गैर-पूर्णांक – Sablefoste

5

सकारात्मक और नकारात्मक संख्या के लिए एक समाधान:

$quotient = $dividend/$divison; 
$integer = (int) ($quotient < 0 ? ceil($quotient) : floor($quotient)); 
$remainder = $dividend % $divisor; 
1

आप उसे ढूंढने की जरूरत है,% ऑपरेटर कहा जाता है आधुनिक (या मापांक)।

0

मैं इस दृष्टिकोण विकसित करने के लिए, क्योंकि मेरा अंश एक नाव मूल्य था और मापांक परिणाम गोलाई था।

रैफैल्लो के दृष्टिकोण का उपयोग करते हुए here फ्लोट को विभाजित करने और उपरोक्त सैम 152 के समाधान से लेने के लिए निम्नलिखित के साथ आया।

$a = 2.1; 
$b = 8; 
$fraction = $a/(float) $b; 
$parts = explode('.', $fraction);     
$int = $parts[0]; 
$remainder = $score - ($int*$b) ; 
2

mathematical correct answer है:

$reminder = $dividend % $divisor; 
$quotient = ($dividend - $reminder)/$divisor; 

और अनुस्मारक हालत 0 <= $reminder < abs($divisor) पुष्टि करता है।

दुर्भाग्यवश, कई प्रोग्रामिंग भाषाएं (PHP समेत) गणितीय दृष्टिकोण से नकारात्मक संख्याओं को सही तरीके से संभालती नहीं हैं। वे मानदंड और अनुस्मारक के संकेत की गणना करने के लिए different rules का उपयोग करते हैं।

आप ऋणात्मक संख्याओं के साथ काम करते हैं और गणितीय सही परिणाम प्राप्त करने की जरूरत है, तो आप निम्न सूत्रों का उपयोग कर सकते हैं:

$reminder = (($dividend % $divider) + abs($divider)) % abs($divider); 
$quotient = ($dividend - $reminder)/$divider; 

वे जिस तरह से पर भरोसा करते हैं पीएचपी नकारात्मक ऑपरेंड साथ मापांक गणना करता है और वे प्रदान नहीं कर सकते सही परिणाम अगर वे एक अलग भाषा में पोर्ट किया जाता है।

यहां एक script है जो इन सूत्रों को लागू करता है और उपरोक्त गणितीय सही उत्तर में उदाहरण के रूप में प्रदान किए गए मानों के विरुद्ध परिणाम जांचता है।

+0

का उपयोग करते समय '$ शेष = एफएमओडी ($ लाभांश, $ divisor) 'का उपयोग करें, यह विचार नहीं किया गया कि यह क्यों मतदान किया गया था। – demonkoryu

0

मंजिल() और मापांक (%) यदि केवल कुछ मिनट/सेकंड दिए का उपयोग कर 1 घंटे 6 मिनट की तरह तार को दिखाने के लिए एक उदाहरण:

$minutes=126; 

if($minutes < 60) { 
    $span= $minutes.' min.'; 
} else { 
    $rem=$minutes % 60; 
    $span=floor($minutes/60).' h. '. (($rem>0) ? $rem.' min.':''); 
} 

// echo 'Hello Jon Doe, we notify you that even will last for 2 h. 6 min. 
echo 'Hello Jon Doe, we notify you that event will last for '.$span; 
संबंधित मुद्दे