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


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.