দেওয়া হয়েছে, বলুন, 1.25 - আমি কীভাবে এই সংখ্যার "1" এবং "25" অংশ পেতে পারি?
দশমিক অংশ .0, .25, .5, বা .75 হয় কিনা তা আমাকে পরীক্ষা করে দেখতে হবে।
দেওয়া হয়েছে, বলুন, 1.25 - আমি কীভাবে এই সংখ্যার "1" এবং "25" অংশ পেতে পারি?
দশমিক অংশ .0, .25, .5, বা .75 হয় কিনা তা আমাকে পরীক্ষা করে দেখতে হবে।
split()
অবচিত করা হয়েছে been
explode(".",1.10);
1 এবং 10 নয়, 1 এবং 1 দেবেন বলে জেনে থাকুন
উত্তর:
$n = 1.25;
$whole = floor($n); // 1
$fraction = $n - $whole; // .25
তারপরে 1/4, 1/2, 3/4 ইত্যাদির সাথে তুলনা করুন
নেতিবাচক সংখ্যার ক্ষেত্রে, এটি ব্যবহার করুন:
function NumberBreakdown($number, $returnUnsigned = false)
{
$negative = 1;
if ($number < 0)
{
$negative = -1;
$number *= -1;
}
if ($returnUnsigned){
return array(
floor($number),
($number - floor($number))
);
}
return array(
floor($number) * $negative,
($number - floor($number)) * $negative
);
}
$returnUnsigned
উপার্জন থেকে এটা স্টপ -1,25 করার জন্য -1 & -0,25
intval()
বা সাধারণ কাস্টিং এর (int)
চেয়ে আরও পারফরম্যান্স হতে পারেfloor()
এই কোডটি এটি আপনার জন্য বিভক্ত করবে:
list($whole, $decimal) = explode('.', $your_number);
যেখানে $ পুরোটি সম্পূর্ণ সংখ্যা এবং $ দশমিক দশমিক দশকের পরে সংখ্যাগুলি থাকে।
explode(".",1.10);
1 এবং 10 নয়, 1 এবং 1 দেবেন বলে জেনে থাকুন
শুধু আলাদা হতে :)
list($whole, $decimal) = sscanf(1.5, '%d.%d');
কোডপ্যাড ।
একটি অতিরিক্ত সুবিধা হিসাবে, এটি কেবল তখনই বিভক্ত হবে যেখানে উভয় পক্ষই সংখ্যার সমন্বয়ে গঠিত।
মেঝে () পদ্ধতিটি নেতিবাচক সংখ্যার জন্য কাজ করে না। এটি প্রতিবার কাজ করে:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - $whole; // .7
... নেতিবাচক (একই কোড, বিভিন্ন সংখ্যা) এর জন্যও কাজ করে:
$num = -5.7;
$whole = (int) $num; // -5
$frac = $num - $whole; // -.7
একটি ছোট উপায় (মেঝে এবং fmod ব্যবহার করুন)
$var = "1.25";
$whole = floor($var); // 1
$decimal = fmod($var, 1); //0.25
তারপরে $ দশমিক 0, .25, .5, বা .75 এর সাথে তুলনা করুন
(a % 1)
এবং এটি নেতিবাচক সংখ্যাগুলি পরিচালনা করে।
পিএইচপি 5.4+
$n = 12.343;
intval($n); // 12
explode('.', number_format($n, 1))[1]; // 3
explode('.', number_format($n, 2))[1]; // 34
explode('.', number_format($n, 3))[1]; // 343
explode('.', number_format($n, 4))[1]; // 3430
এটিই আমি ব্যবহার করি:
$float = 4.3;
$dec = ltrim(($float - floor($float)),"0."); // result .3
$x = 1.24
$result = $x - floor($x);
echo $result; // .24
যদি আপনি এটিতে সর্বদা 2 দশমিক স্থানের উপর নির্ভর করতে পারেন তবে আপনি কেবল একটি স্ট্রিং অপারেশন ব্যবহার করতে পারেন:
$decimal = 1.25;
substr($decimal,-2); // returns "25" as a string
পারফরম্যান্স সম্পর্কে ধারণা নেই তবে আমার সাধারণ ক্ষেত্রে এটি আরও ভাল ছিল ...
দশমিকের পরে ডলারের পরিমাণ এবং পরিমাণ আলাদা করার জন্য আমার খুব কষ্ট হচ্ছিল। আমি মনে করি আমি এটি বেশিরভাগই খুঁজে পেয়েছি এবং ভেবেছিলাম যে কোনও ইয়েল সমস্যা হলে ভাগ করে নিই
তাই মূলত ...
দাম যদি 1234.44 হয় ... পুরো 1234 হবে এবং দশমিক 44 হবে বা
দাম যদি 1234.01 হয় ... পুরো 1234 হবে এবং দশমিকটি হবে 01 বা
দাম যদি 1234.10 হয় ... পুরো 1234 হবে এবং দশমিক 10 হবে
এবং তাই এগিয়ে
$price = 1234.44;
$whole = intval($price); // 1234
$decimal1 = $price - $whole; // 0.44000000000005 uh oh! that's why it needs... (see next line)
$decimal2 = round($decimal1, 2); // 0.44 this will round off the excess numbers
$decimal = substr($decimal2, 2); // 44 this removed the first 2 characters
if ($decimal == 1) { $decimal = 10; } // Michel's warning is correct...
if ($decimal == 2) { $decimal = 20; } // if the price is 1234.10... the decimal will be 1...
if ($decimal == 3) { $decimal = 30; } // so make sure to add these rules too
if ($decimal == 4) { $decimal = 40; }
if ($decimal == 5) { $decimal = 50; }
if ($decimal == 6) { $decimal = 60; }
if ($decimal == 7) { $decimal = 70; }
if ($decimal == 8) { $decimal = 80; }
if ($decimal == 9) { $decimal = 90; }
echo 'The dollar amount is ' . $whole . ' and the decimal amount is ' . $decimal;
এখানে একটি সাধারণ মডুলাস দেখা যায়নি ...
$number = 1.25;
$wholeAsFloat = floor($number); // 1.00
$wholeAsInt = intval($number); // 1
$decimal = $number % 1; // 0.25
এই ক্ষেত্রে উভয় পেয়ে $wholeAs?
এবং $decimal
অন্যান্য উপর নির্ভর করে না। (আপনি স্বতন্ত্রভাবে 3 আউটপুটগুলির মধ্যে 1 টি নিতে পারেন)) আমি দেখিয়েছি $wholeAsFloat
এবং $wholeAsInt
কারণ এটি floor()
একটি ফ্লোট টাইপ নম্বর প্রদান করে যদিও এটির নম্বরটি সর্বদা সম্পূর্ণ থাকবে। (যদি আপনি ফলাফলটি কোনও টাইপ-ইঙ্গিতযুক্ত ফাংশন প্যারামিটারে পাস করেন তবে এটি গুরুত্বপূর্ণ))
আমি চেয়েছিলাম যে এটি একটি ভাসমান পয়েন্ট সংখ্যক ঘন্টা / মিনিট, উদাহরণস্বরূপ, 96.25, ঘন্টা এবং মিনিটের মধ্যে আলাদাভাবে একটি ডেট ইন্টেরওয়াল উদাহরণ হিসাবে 96 ঘন্টা 15 মিনিটের হিসাবে বিভক্ত করতে পারে । আমি নিম্নলিখিত হিসাবে এটি করেছি:
$interval = new \DateInterval(sprintf("PT%dH%dM", intval($hours), (($hours % 1) * 60)));
আমি আমার ক্ষেত্রে সেকেন্ডের যত্ন নিই না।
val = -3.1234
fraction = abs(val - as.integer(val) )