Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> PHP

PHP में फ़्लोटिंग पॉइंट मानों की तुलना।

PHP में, समानता के लिए फ़्लोटिंग पॉइंट मानों का परीक्षण समस्याग्रस्त है, क्योंकि एक फ़्लोटिंग पॉइंट नंबर दूसरे के बराबर है या नहीं, यह जाँचते समय PHP विफल हो रहा है। इस तथ्य के बावजूद कि फ़्लोटिंग पॉइंट नंबरों का एक ही मान है, वास्तव में समान होने की आवश्यकता नहीं है। तो इस लेख में हम फ्लोटिंग-पॉइंट नंबरों की तुलना में समस्या का सामना कर रहे हैं और इस समस्या से बचने के लिए विभिन्न प्रक्रियाओं का प्रदर्शन करेंगे।

उदाहरण

आइए इसे एक साधारण उदाहरण के साथ परखें:

<?php
   $a = 0.14;
   $b = 1 - 0.86; //0.14
   if($a == $b ){
      echo 'a and b are same';
   }
   else {
      echo 'a and b are not same';
   }
?>

आउटपुट:

a and b are not same.

स्पष्टीकरण:

इस कोड में, if कंडीशन के बजाय अन्य कंडीशन निष्पादित की जाती है, भले ही $a और $b समान हों। यह फ़्लोटिंग-पॉइंट मानों की विशेषता के कारण है कि जिस तरह से उनका आंतरिक रूप से प्रतिनिधित्व किया गया था। आइए वास्तविक समय में इस समस्या से बचने के लिए PHP में विभिन्न मामलों पर चर्चा करें।

केस1:

कंप्यूटर सिस्टम में गणना में सबसे छोटे अंतर का उपयोग करके फ़्लोटिंग पॉइंट मानों की तुलना प्रदर्शित करें।

उदाहरण:

<?php
   $val1 = 2.183459;
   $val2 = 2.183450;
   $epsilon = 0.00001;
   if(abs($val1 - $val2) < $epsilon) {
      echo "True";
   }
   else {
      echo "False";
   }
?>

आउटपुट:

True

स्पष्टीकरण:

यहां हम एप्सिलॉन के साथ दो फ्लोटिंग पॉइंट वेरिएबल्स वैल1 और वैल2 का उपयोग कर रहे हैं। फिर हम एब्स () नाम के मूल फ़ंक्शन का उपयोग करके चर (वैल 1 और वैल 2) का पूर्ण अंतर लेते हैं। यह कोड हमें निरपेक्ष मान देगा लेकिन सवाल यह है कि हम निरपेक्ष मान क्यों ले रहे हैं? इसका उत्तर यह है कि हम देख सकते हैं कि दशमलव के बाद एक ही अंक वाले दोनों मान सटीक मान 5 तक हैं, जो PHP के लिए तुलना का विश्लेषण करने के लिए कठिन है।

केस 2:

राउंड () फ़ंक्शन का उपयोग।

<?php
   $val1 = 9 - 6.2;
   $val2 = 1.8;
   var_dump(round($val1, 2) == round($val2, 2));
?>

आउटपुट:

bool(true)

स्पष्टीकरण:

यहां हम दो फ्लोटिंग पॉइंट वेरिएबल्स val1 और val2 का उपयोग कर रहे हैं। फिर हम राउंड () नाम के पूर्वनिर्धारित फ़ंक्शन का उपयोग कर रहे हैं जो दो दशमलव स्थानों तक फ्लोटिंग मानों को राउंड ऑफ करता है और फिर इसकी तुलना करता है। यहां हम अपने अपेक्षित परिणाम को सही तरीके से प्राप्त करने के लिए पूर्वनिर्धारित राउंड () फ़ंक्शन का उपयोग कर रहे हैं।


  1. PHP में serializeArray से POST मान कैसे प्राप्त करें?

    PHP में serializeArray से POST मान प्राप्त करने के लिए, serializeArray() . का उपयोग करें तरीका। serializeArray( ) विधि .serialize() विधि जैसे सभी रूपों और प्रपत्र तत्वों को क्रमबद्ध करती है लेकिन आपके साथ काम करने के लिए एक JSON डेटा संरचना लौटाती है। मान लें कि हमारे पास serialize.php . में PHP सा

  1. सी # में फ़्लोटिंग पॉइंट अक्षर क्या हैं?

    एक फ़्लोटिंग-पॉइंट शाब्दिक में एक पूर्णांक भाग, एक दशमलव बिंदु, एक भिन्नात्मक भाग और एक घातांक भाग होता है। आप फ्लोटिंग पॉइंट लिटरल को दशमलव रूप या घातांक रूप में प्रस्तुत कर सकते हैं। फ्लोटिंग पॉइंट लिटरल के कुछ उदाहरण निम्नलिखित हैं - 9.23456 269485E-5F आइए अब फ्लोटिंग पॉइंट लिटरल प्रिंट करें -

  1. सी # में फ़्लोटिंग पॉइंट अक्षर बनाम इंटीजर अक्षर

    पूर्णांक अक्षर एक पूर्णांक शाब्दिक दशमलव, या हेक्साडेसिमल स्थिरांक हो सकता है। एक उपसर्ग आधार या मूलांक निर्दिष्ट करता है:हेक्साडेसिमल के लिए 0x या 0X, और दशमलव के लिए कोई उपसर्ग आईडी नहीं है। यहाँ पूर्णांक शाब्दिकों के कुछ उदाहरण दिए गए हैं - 10 // int 18u // unsigned int आइए एक चर घोषित और आरंभ