PDA

View Full Version : سوال: مشکل در استفاده از فانکشن bcdiv برای نمایش خروجی اعداد اعشاری



alismith
یک شنبه 03 آبان 1394, 12:47 عصر
سلام

من در استفاده کردن از فانکشن bcdiv یک مشکلی دارم که از استک پرسیدم ولی جوابی که من میخواستم رو بهم ندادن اینم لینکش http://stackoverflow.com/questions/33327901

من نیاز دارم که وقتی 2تا عدد به این فانکشن میدم که اونارو تقسیم کنه عدد حاصل رو با تعداد رقم های واقعی در بخش اعشاری عدد برام برگردونه، برای مثال :


bcdiv('50','3')

خروجی میشه :


16

برای اینکه بخش اعشاری عدد رو نشون بده باید پارامتر سوم تعیین بشه مثلا :


bcdiv('50','3',4) //16.6666

اما من میخام کل رقم های بخش اعشاری نشون داده بشه، ولی خب در اعداد مختلف نمیدونم بخش اعشار چند رقمی میتونه باشه، مثلا من میخام خود فانکشن خروجی رو با بخش اعشاری به طور کامل به من بده، مثلا :


bcdiv('50','3'); // correct output => 16.66666666666667

ممنون میشم دوستان راه حلی پیشنهاد کنند


با تشکر

djtrex
یک شنبه 03 آبان 1394, 14:28 عصر
سلام

من در استفاده کردن از فانکشن bcdiv یک مشکلی دارم که از استک پرسیدم ولی جوابی که من میخواستم رو بهم ندادن اینم لینکش http://stackoverflow.com/questions/33327901

من نیاز دارم که وقتی 2تا عدد به این فانکشن میدم که اونارو تقسیم کنه عدد حاصل رو با تعداد رقم های واقعی در بخش اعشاری عدد برام برگردونه، برای مثال :


bcdiv('50','3')

خروجی میشه :


16

برای اینکه بخش اعشاری عدد رو نشون بده باید پارامتر سوم تعیین بشه مثلا :


bcdiv('50','3',4) //16.6666

اما من میخام کل رقم های بخش اعشاری نشون داده بشه، ولی خب در اعداد مختلف نمیدونم بخش اعشار چند رقمی میتونه باشه، مثلا من میخام خود فانکشن خروجی رو با بخش اعشاری به طور کامل به من بده، مثلا :


bcdiv('50','3'); // correct output => 16.66666666666667

ممنون میشم دوستان راه حلی پیشنهاد کنند


با تشکر

۱۶.۶۶۶۶۶۶۶۶۶۶۶۶۶۷ یه عدد رند شده است! جواب تقسیم شما ۱۶.۶۶۶۶۶۶۶۶۶۶۶۶۶۶۶۶۶۶۶ که به صورت نامحدود و تکراری ۶ بعد از ممیز وجود داره! چون ۵۰/۳ یک کسر متناوب (با اعداد اعشاری تکراری) هست. چیزی که bcdiv به شما میده عدد درستیه (از نظر ریاضی) ولی تعداد رقم های اعشار محدود شده.

اول از همه باید یادآوری کنم میتونید با تابع bcscale میزان پیشفرض تعداد رقم پس از اعشار رو مشخص کنید (دیگه نیاز نیست برای bcdiv پارامتر سوم رو وارد کنید)
http://php.net/manual/en/function.bcscale.php

اما در مورد رند کردن (+ رند به بالا و پایین)‌ میتونید از این توابعی که اینجا گفته شده استفاده کنید یا خودتون مشابه اونها بر اساس نیازتون بنویسید. (کار با رشته ها!)
http://stackoverflow.com/questions/1642614/how-to-ceil-floor-and-round-bcmath-numbers