PHP में दो दशमलव तक संख्या: 2025 के टॉप तरीके

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

क्यों "सिर्फ round()" अब काम नहीं करता? 2025 का नजरिया

\n\n

जिसने भी कभी PHP में ऑनलाइन स्टोर, अकाउंटिंग मॉड्यूल या करेंसी रेट पार्सर लिखा है, उसने यह सवाल जरूर पूछा होगा: "संख्या 19.9999999999999 को 20.00 के रूप में कैसे दिखाएं?" Stack Overflow पर इस सवाल के हजारों व्यूज हैं, और यह कोई संयोग नहीं है। 2025 में, जब PHP गर्व से वर्शन 8.4 और उससे ऊपर है, पुराने round() के टोटके कभी-कभी ऐसे सरप्राइज देते हैं जो डरावनी फिल्म से कम नहीं हैं।

\n\n

आइए एक बार और हमेशा के लिए समझ लें: PHP में दो दशमलव स्थानों के साथ संख्या कैसे दिखाएं, ताकि यह विश्वसनीय, सुंदर और आधुनिक मानकों के अनुरूप हो। हम सिर्फ फोरम से जवाब कॉपी नहीं करेंगे - हम समझेंगे कि प्रत्येक तरीका ऐसा क्यों काम करता है।

\n\n

समस्या #1: फ्लोटिंग पॉइंट - आपका धोखेबाज दोस्त

\n\n

PHP, अधिकांश भाषाओं की तरह, फ्लोटिंग पॉइंट संख्याओं (float) के लिए IEEE 754 फॉर्मेट का उपयोग करता है। इसका मतलब है कि 0.1 + 0.2 का परिणाम 0.3 नहीं, बल्कि 0.30000000000000004 हो सकता है। और 19.95 को 100 से गुणा करने पर 1994.9999999999998 मिल सकता है। अगर आप सीधे round() कॉल करते हैं - तो आपको अप्रत्याशित परिणाम मिलेगा।

\n\n

इसलिए 2025 में नियम नंबर एक: वित्तीय गणनाओं के लिए float पर भरोसा न करें। लेकिन अगर आपको सिर्फ आउटपुट को फॉर्मेट करना है (जैसे, शोकेस पर कीमत), तो निम्नलिखित विधियां बिल्कुल सही हैं।

\n\n

विधि #1: क्लासिक - number_format()

\n\n

यह 99% कार्यों के लिए सबसे लोकप्रिय और सुरक्षित तरीका है। number_format() फंक्शन सिर्फ राउंड नहीं करता - यह संख्या को हजारों विभाजक और निर्धारित दशमलव स्थानों के साथ फॉर्मेट करता है।

\n\n
<?php\n$price = 19.999999;\necho number_format($price, 2, '.', ''); // आउटपुट: 20.00\n\n$salary = 1234.5;\necho number_format($salary, 2, '.', ','); // आउटपुट: 1,234.50\n?>
\n\n

यह क्यों बढ़िया है:

\n
    \n
  • निर्दिष्ट स्थानों तक स्वचालित रूप से राउंड करता है (गणितीय नियमों के अनुसार)।
  • \n
  • पूर्णांक और भिन्नात्मक भाग के लिए अपना विभाजक सेट करने की अनुमति देता है।
  • \n
  • यदि भिन्नात्मक भाग छोटा है तो शून्य जोड़ता है (जैसे, 5 के बजाय 5.00)।
  • \n
\n\n

नाजुक बिंदु: यदि आप स्ट्रिंग पास करते हैं, तो PHP इसे संख्या में बदलने का प्रयास करेगा। लोकेल से सावधान रहें - स्ट्रिंग में अल्पविराम को दशमलव विभाजक के रूप में नहीं समझा जा सकता है।

\n\n

कब उपयोग करें?

\n

कीमतों, वेतन, प्रतिशत और किसी भी डेटा को प्रदर्शित करने के लिए जहां दो दशमलव स्थानों और अंकों के विभाजन की आवश्यकता है।

\n\n

विधि #2: गणितीय सटीकता - round()

\n\n

round() फंक्शन एक संख्या (float टाइप) लौटाता है, स्ट्रिंग नहीं। यह महत्वपूर्ण है यदि आप आगे की गणना करने जा रहे हैं।

\n\n
<?php\n$value = 45.6789;\n$rounded = round($value, 2); // 45.68 (float)\n\n// लेकिन! अगर आपको दो स्थान और अंत में शून्य चाहिए:\necho $rounded; // आउटपुट 45.68 (ठीक है)\necho round(45.0, 2); // आउटपुट 45 (float), 45.00 नहीं\n?>
\n\n

छिपा हुआ खतरा: PHP 8+ में round() डिफ़ॉल्ट रूप से "बैंकिंग राउंडिंग" (round half to even) का उपयोग करता है। इसका मतलब है कि 2.5 2 हो जाएगा, और 3.5 4 हो जाएगा। वित्तीय गणनाओं के लिए यह अस्वीकार्य हो सकता है। क्लासिक राउंडिंग के लिए PHP_ROUND_HALF_UP कॉन्स्टेंट का उपयोग करें:

\n\n
<?php\necho round(2.5, 0, PHP_ROUND_HALF_UP); // 3\necho round(2.5, 0); // 2 (बैंकिंग)\n?>
\n\n

निष्कर्ष: round() + number_format()

\n

आदर्श जोड़ी: पहले गणना के लिए राउंड करें, फिर प्रदर्शन के लिए फॉर्मेट करें।

\n\n
<?php\n$raw = 19.999999;\n$precise = round($raw, 2, PHP_ROUND_HALF_UP);\necho number_format($precise, 2, '.', ''); // 20.00\n?>
\n\n

विधि #3: sprintf() की सुंदरता

\n\n

sprintf() फंक्शन स्ट्रिंग फॉर्मेटिंग का एक शक्तिशाली उपकरण है। यह राउंड नहीं करता, बल्कि अतिरिक्त अंकों को हटा देता है? नहीं, यह भी राउंड करता है, लेकिन अलग तरीके से।

ब्लॉग

पुस्तक अनुशंसाएँ