سؤال
وكيف يمكنني تقسيم الرقم الفاصلة العشرية في بي؟
ولقد حصلت $ الأسطوانات = 15/4. الأمر الذي يجعل $ الأسطوانات إلى 3.75. أود أن تقسيم خارجا 3 و 75 أجزاء، لذلك $ كثافة العمليات = 3 و$ ديسمبر = 75. قانون بلدي غير العاملة هو:
$num = 15/4; // or $num = 3.75;
list($int, $dec) = split('.', $num);
ولكن هذا يؤدي إلى كثافة $ فارغة و$ ديسمبر
وشكرا مقدما.
المحلول
إذا explode
تمثيل عشري من الرقم، تفقد الدقة. إذا كنت لا تمانع، فليكن ذلك (وهذا موافق لتمثيل نصية). خذ بعين الاعتبار لغة! نحن البلجيكيين استخدام فاصلة (على الأقل غير البرمجة منها:).
إذا <م> قيام م> العقل (لحسابات مثلا)، يمكنك استخدام وظيفة floor
:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
ملحوظة: هذا هو لأرقام موجبة. للأرقام السالبة يمكنك عكس علامة، استخدم النهج الإيجابي، وreinvert علامة الجزء كثافة العمليات.
نصائح أخرى
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
إذا كنت تريد $dec
أن تكون إيجابية عندما $num
هو سلبي (مثل إجابات أخرى) يمكن أن تفعله:
$dec = abs($num - $int);
$num = 3.75;
$fraction = $num - (int) $num;
$num = 15/4;
substr(strrchr($num, "."), 1)
في حالة عندما كنت لا تريد أن تفقد الدقة، يمكنك استخدام هذه:
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);
// you will get $whole = 10, $fraction = 10
وهذا يعمل على الأرقام الإيجابية والسلبية:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - (int) $num; // .7