سؤال

وكيف يمكنني تقسيم الرقم الفاصلة العشرية في بي؟

ولقد حصلت $ الأسطوانات = 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 علامة الجزء كثافة العمليات.

نصائح أخرى

تنفجر

list($int,$dec)=explode('.', $num);

وكما أنك لا تحتاج حقا لاستخدام الانقسام القائم باستخدام التعابير المنطقية. و سبليت لا يعمل بالنسبة لك بأنه ''. سيحتاج الطابع الهروب إلى تقديم مباراة حرفية.

$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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top