यह देखते हुए, 1.25 - मुझे इस नंबर के "25" और "25" भाग कैसे मिलते हैं?
मुझे यह जाँचने की आवश्यकता है कि दशमलव भाग .0, .25, .5, या .75 है या नहीं।
split()
को हटा दिया गया है।
explode(".",1.10);
wil 1 और 1 दे, 1 और 10 नहीं
यह देखते हुए, 1.25 - मुझे इस नंबर के "25" और "25" भाग कैसे मिलते हैं?
मुझे यह जाँचने की आवश्यकता है कि दशमलव भाग .0, .25, .5, या .75 है या नहीं।
split()
को हटा दिया गया है।
explode(".",1.10);
wil 1 और 1 दे, 1 और 10 नहीं
जवाबों:
$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);
wil 1 और 1 दे, 1 और 10 नहीं
बस अलग होने के लिए :)
list($whole, $decimal) = sscanf(1.5, '%d.%d');
कोडपैड ।
अतिरिक्त लाभ के रूप में, यह केवल विभाजित होगा जहां दोनों पक्ष अंक से मिलकर होते हैं।
PHP 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
ब्रैड क्रिस्टी का तरीका अनिवार्य रूप से सही है लेकिन इसे अधिक संक्षिप्त रूप से लिखा जा सकता है।
function extractFraction ($value)
{
$fraction = $value - floor ($value);
if ($value < 0)
{
$fraction *= -1;
}
return $fraction;
}
यह उसकी विधि के बराबर है लेकिन परिणाम के रूप में छोटा और उम्मीद के मुताबिक समझना आसान है।
यदि आप हमेशा 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, घंटों और मिनटों में अलग-अलग कर ले और DateInterval उदाहरण के लिए 96 घंटे 15 मिनट। मैंने इस प्रकार किया:
$interval = new \DateInterval(sprintf("PT%dH%dM", intval($hours), (($hours % 1) * 60)));
मैंने अपने मामले में सेकंड की परवाह नहीं की।
val = -3.1234
fraction = abs(val - as.integer(val) )