পিএইচপি মধ্যে ভাসা এবং ডাবল মধ্যে পার্থক্য?


117

আমার এই কোড আছে

$vad = 1.1;

print gettype($vad);

var_dump($vad);

এই আউটপুট হবে:

double
float(1.1) 

সুতরাং এটি ডাবল বা পিএইচপি মধ্যে ভাসা?

উত্তর:


151

পিএইচপি-তে কোনও পার্থক্য নেই। float, doubleবা realএকই ডেটাটাইপ হয়।

সি স্তরে, সমস্ত কিছু হিসাবে সংরক্ষণ করা হয় double
আসল আকারটি এখনও প্ল্যাটফর্ম নির্ভর।

আরও তথ্যের জন্য ম্যানুয়ালটি দেখুন:
http://www.php.net/manual/en/language.tyype.float.php


এটা সম্পর্কে নিশ্চিত? এটি সম্পর্কে কিছু মেমরি ব্যবহার পৃথক আছে?
দ্য ক্র্যাজিপ্রসফার 12

2
আমার ফাংশন আছে function some( float $num){}, যখন আমি some(17.23)এটি ব্যবহার করি মারাত্মক ত্রুটি ছুঁড়ে ফেলে কিছু () অবশ্যই
ভাসমানের

1
@ নবীনদা পিএইচপি এর কি সংস্করণ? পিএইচপি .0.০ এর আগে স্কেলারের ধরণের ইঙ্গিতগুলি পাওয়া যায় নি এবং পরিবর্তে শ্রেণীর নাম হিসাবে ব্যাখ্যা করা হবে। দেখে মনে হচ্ছে সেখানে কী চলছে।
কেন ওয়েইন ভেন্ডারলিন্ডে

কেবল এখনও স্পষ্ট করে বলা যায় যে realপিএইচপি তে এখন পর্যন্ত এরকম কোনও ডেটাটাইপ নেই ।
মুহাম্মদ শেরাজ

@ মুহম্মেদ শেরাজ তবে এর একটি is_realফাংশন রয়েছে যার সাথে একটি উপন্যাস রয়েছে is_float...; )
ম্যাকমেড

21

পিএইচপি জন্য, তারা একই। http://www.php.net/manual/en/language.tyype.float.php :

ফ্লোটিং পয়েন্ট নম্বর ("ফ্লোটস", "ডাবলস", বা "রিয়েল নাম্বার" নামেও পরিচিত) নীচের যেকোন সিনট্যাক্স ব্যবহার করে নির্দিষ্ট করা যেতে পারে: [...]

বিভ্রান্তিকর অংশটি হ'ল কেন গেটটাইপ (যা আপনার ব্যবহার করা উচিত নয়) "ভাসা" এর পরিবর্তে "ডাবল" ফিরিয়ে দেয়। উত্তরটি হ'ল http://de2.php.net/manual/en/function.gettype.php :

"ডাবল" (historicalতিহাসিক কারণে "ডাবল" ভাসমানের ক্ষেত্রে ফিরে আসে, কেবল "ভাসা" নয়)


10

উইন্ডোজে পিএইচপি 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

পিএইচপি 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শ্রেণীর উদাহরণ সহ একটি পরিবর্তনশীল আশা করে
অটারলাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.