मैं की तरहपाश के लिए नाव के लिए नहीं चल रहा है महत्व देता
<?php
for($i=0;$i<=10;$i+0.4){
echo $i."<br>";
}
?>
नीचे इस कोड मूल्य प्रिंट की मैं तक 9.6 नहीं 10
कारण है कि यह मैं का मान देता है पाश के लिए एक राशि = 10 अंत में।
मैं की तरहपाश के लिए नाव के लिए नहीं चल रहा है महत्व देता
<?php
for($i=0;$i<=10;$i+0.4){
echo $i."<br>";
}
?>
नीचे इस कोड मूल्य प्रिंट की मैं तक 9.6 नहीं 10
कारण है कि यह मैं का मान देता है पाश के लिए एक राशि = 10 अंत में।
+=
का उपयोग केवल प्लस के बजाय, इसे बढ़ाने के लिए करें। जैसा कि अब है, यह मेरे लिए एक अनंत लूप है।
संपादित करें: किसी कारण से PHP विभिन्न प्रकार के लूपों के साथ ठीक से काम नहीं करता है।
यह नीचे
for($i=0;$i<=100;$i+=4){
echo $i/10."<br>";
}
यहाँ काम करना चाहिए var_dump
int(0)
float(0.4)
float(0.8)
float(1.2)
float(1.6)
int(2)
float(2.4)
float(2.8)
float(3.2)
float(3.6)
int(4)
float(4.4)
float(4.8)
float(5.2)
float(5.6)
int(6)
float(6.4)
float(6.8)
float(7.2)
float(7.6)
int(8)
float(8.4)
float(8.8)
float(9.2)
float(9.6)
int(10)
शायद ऑटो कास्टिंग पीएचपी कि क्योंकि मशीनों के लिए फ़्लोट संख्या के प्रतिनिधित्व करने के लिए इस
यह प्रिंटिंग क्यों नहीं कर रहा है 10. मैं केवल यह पूछ रहा हूं। कृपया – manishjangir
कोई समाधान नहीं है। –
@RokKralj अब एक समाधान। – Mob
खड़ी कर रहा है कर रहा है है कि - http://en.wikipedia.org/wiki/Floating_point
मैं छोरों
+1। लेकिन पूर्णांक अनुक्रमणिका का उपयोग करना हमेशा संभव नहीं होता है। उन मामलों में आपको ईपीएसलॉन मान का उपयोग करना होगा - उदा। अनुमत गलती मेरा जवाब देखें –
सही फ्लोट तुलना (जो < = में जगह लेता है) के साथ कोई समस्या है के लिए पूर्णांक अनुक्रमित उपयोग करने के लिए सलाह देते हैं।
इसे इस तरह कार्य करें:
for($i=0; $i<=100; $i+=4){
echo ($i/10)."<br>";
}
आप कर सकता है:
<?php
for($i=0;$i<=100;$i += 4){
echo ($i/10)."<br>";
}
?>
परिणाम यहाँ: http://codepad.org/CxvzEUeq
लेकिन वास्तव में मेरे पास दो मान हैं एक $ $ शुरू होता है और दूसरा $ अंत होता है। ये मान फ्लोट या इंट जैसे कुछ भी हो सकते हैं। तो मेरे लूप के लिए ($ i = $ start; $ <= $ end; $ i = +। 4) – manishjangir
यह समस्या तब होती है जब आप किसी अन्य उत्तर में सुझाए गए तुलना की तुलना करते हैं –
@ user1031816: मैंने एक और पोस्ट किया है जवाब, जो दिखाता है कि चीज को कैसे किया जाना चाहिए। ईपीएसलॉन मूल्य के साथ। –
जब तुलना, आप एप्सिलॉन मूल्य है, जिसकी अनुमति अर्थ है उपयोग करने के लिए फ्लोट वैल्यू की तुलना करते समय गलती।
$epsilon=0.000001; //a very small number
for($i=0; $i<10 or abs($i-10)<$epsilon; $i+=0.4){
echo $i."<br>";
}
सटीक तुलना के लिए आप उन मूल्य दौर कर सकते हैं, निम्नलिखित की तरह के रूप में ...
<?php
for($i=0; round($i,1) <= 10; $i += 0.4){
echo $i."<br/>";
}
?>
<?php
for($i=0;$i<10;$i+0.4){
echo $i."<br>";
}
?>
यदि u डाल मैं < = 10 तो यह 10 मूल्य, लेकिन करने के लिए मुद्रण के लिए जारी रहेगा अगर निकालें = तो हस्ताक्षर यह 9 बजे बंद हो जाएगा!
आपने गलती की, '$ i + 0.4' शायद '$ i + = 0.4' था, क्योंकि आपने कहा था कि यह 9.6 तक बढ़ता है, अमान्य नीचे 3 उत्तरों प्रस्तुत करता है। –