फ्लोट और पीएचपी में डबल के बीच अंतर?


117

मेरे पास यह कोड है

$vad = 1.1;

print gettype($vad);

var_dump($vad);

यह उत्पादन होगा:

double
float(1.1) 

तो यह डबल है या php में फ्लोट?

जवाबों:


151

PHP में कोई अंतर नहीं है। float, doubleया realसमान डेटाटाइप हैं।

सी स्तर पर, सब कुछ एक के रूप में संग्रहीत किया जाता है double
वास्तविक आकार अभी भी प्लेटफ़ॉर्म-निर्भर है।

अधिक जानकारी के लिए मैनुअल देखें:
http://www.php.net/manual/en/language.types.float.php


उस बारे में यकीन? क्या इसके बारे में कुछ स्मृति उपयोग भिन्न हैं?
theCrazyProfurer

2
मेरे पास फंक्शन है function some( float $num){}, जब मैं इसका उपयोग करता हूं तो some(17.23)यह घातक त्रुटि फेंकता है () फ्लोट का एक उदाहरण होना चाहिए, डबल दिया गया,
नवीन

1
@NaveenDA PHP का क्या संस्करण है? PHP 7.0 से पहले, स्केलर प्रकार के संकेत उपलब्ध नहीं थे और इसकी जगह क्लास के नाम के रूप में व्याख्या की जाएगी। ऐसा लग रहा है कि वहां क्या चल रहा है।
केन वेन वांडरलिंडे

बस स्पष्ट है कि realphp में अब तक इस तरह का कोई डेटा टाइप नहीं है ।
मुहम्मद शेराज़

@MuhammadSheraz लेकिन एक is_realसमारोह है, के साथ एक उपनाम है is_float...; )
मैकमेड

21

PHP के लिए, वे समान हैं। http://www.php.net/manual/en/language.types.float.php :

फ्लोटिंग पॉइंट नंबर ("फ्लोट्स", "डबल्स" या "रियल नंबर" के रूप में भी जाना जाता है) को निम्नलिखित में से किसी भी वाक्य रचना का उपयोग करके निर्दिष्ट किया जा सकता है: [...]

भ्रमित करने वाला हिस्सा यही है कि गेटटाइप (जिसका उपयोग आपको नहीं करना चाहिए, वैसे भी) "फ्लोट" के बजाय "डबल" देता है। इसका उत्तर http://de2.php.net/manual/en/function.gettype.php है :

"डबल" (ऐतिहासिक कारणों के लिए "डबल" एक फ्लोट के मामले में लौटाया जाता है, और केवल "फ्लोट" नहीं)


10

Windows पर PHP 7.0.6 के रूप में, xdebug के बिना इस कमांड की तुलना करें :

$ php -r 'var_dump(28.4);'
float(28.4)

और xdebug के साथ :

$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)

ध्यान दें कि यह केवल var_dump () आउटपुट बदलता है, लेकिन वास्तविक मेमोरी प्रबंधन नहीं।

यह कुछ चिंताओं को संबोधित कर सकता है कि आप कुछ अन्य मशीनों में var_dump के doubleबजाय क्यों दिखाई देते floatहैं।

इसके अलावा, xdebug के साथ या उसके बिना, gettypeअभी भी लौटता है string(6) "double"


4

PHP में 7.0.14

function test(double $a) {
    var_dump($a);
}
test(2.2111);

रिटर्न "घातक त्रुटि: बिना टाइप किए हुए त्रुटि: तर्क 1 परीक्षण करने के लिए पारित () दोहरे का एक उदाहरण होना चाहिए, फ्लोट दिया गया"।

function test(float $a) {
    var_dump($a);
}
test(2.2111);

स्क्रीन पर प्रिंट करता है 2.2111।


8
केवल floatएक वैध प्रकार संकेत है ( देखें )। जब आप doubleइसके बजाय टाइप करते हैं, तो इसे एक वर्ग नाम के रूप में माना जाता है, और दुभाषिया अपवाद को फेंकता है, क्योंकि यह doubleकक्षा के उदाहरण के साथ एक चर की उम्मीद करता है
AterLux
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.