PDA

View Full Version : سوال: آیا توی پی اچ پی می تونم روی اعدادی با 20 تا 40 رقم عملیات ریاضی انجام بدم؟



idocsidocs
یک شنبه 24 مهر 1390, 13:57 عصر
وقتی با پی اچ پی روی چندتا عدد با تعداد رقمهای بالا عملیات ریاضی انجام می دم، پی اچ پی از e برای نشون دادن تعادا رقمهای اون عدد استفاده می کنه.

توی پی اچ پی چطور می تونم روی اعدادی با 20 تا 40 رقم عملیات ریاضی انجام بدم؟

blackmak
یک شنبه 24 مهر 1390, 22:28 عصر
BCMath Arbitrary Precision Mathematics (http://ir.php.net/manual/en/book.bc.php)

idocsidocs
دوشنبه 25 مهر 1390, 00:02 صبح
BCMath Arbitrary Precision Mathematics (http://ir.php.net/manual/en/book.bc.php)


من از توابعی که معرفی کردید استفاده کردم و دو عدد 20 رقمی رو با هم جمع کردم اما نتیجه به شکل زیر نمایش داده شد:
1.90136867392E+150.0000

هنوز مشکلم حل نشده.

tux-world
دوشنبه 25 مهر 1390, 01:14 صبح
خوب عزیزم جمع همون عدد رو درست داده که . این به خاطر این هستش که جمع اون دو تا عدد خیلی بزرگه . شما پس چه جور عددی میخوایین ازش دریافت کنید دقیقا منظورتون رو بگین که به جه صورت میخوایین عدد رو

idocsidocs
دوشنبه 25 مهر 1390, 01:40 صبح
خوب عزیزم جمع همون عدد رو درست داده که . این به خاطر این هستش که جمع اون دو تا عدد خیلی بزرگه . شما پس چه جور عددی میخوایین ازش دریافت کنید دقیقا منظورتون رو بگین که به جه صورت میخوایین عدد رو

من نمی خوام به این صورت باشه.

فرض کنید یه عدد 20 رقمی رو با یه عدد 22 رقمی جمع می کنیم، من می خوام عدد حاصل به درستی (بدون گرد شدن و ...) نمایش داده بشه.

Hooman.Prog
دوشنبه 25 مهر 1390, 19:32 عصر
قدیما در زبان سی چنین چیزی رو پیاده کرده بودم.
رقم ها در یک آرایه ذخیره میشد و درست به همون شکلی که به خودمون در مدرسه یاد دادن اعمال اصلی رو انجام بدیم برنامه هم عمل میکرد.
البته برای اعداد بزرگ کتابخانه های مخصوص هم وجود داره. ولی اطلاع ندارم برای PHP چه کتابخانه/اکستنشنی هست.

idocsidocs
دوشنبه 25 مهر 1390, 21:06 عصر
البته برای اعداد بزرگ کتابخانه های مخصوص هم وجود داره. ولی اطلاع ندارم برای PHP چه کتابخانه/اکستنشنی هست.
اتفاقا منم دنبال همین کتابخانه می گردم. اگر کسی از دوستان در مورد چنین کتابخانه ای اطلاع داره، لطفا توضیحاتی در موردش ارائه بده.

blackmak
دوشنبه 25 مهر 1390, 21:07 عصر
<?php
$int = 10000000000000000000;
echo number_format($int,0,',','');
?>

idocsidocs
دوشنبه 25 مهر 1390, 21:24 عصر
<?php $int = 10000000000000000000; echo number_format($int,0,',','');?>من اصلا کاری به اعداد اعشاری ندارم و نیازی به استفاده از توابع رند کردن ندارم.

من می خوام با اعداد صحیح بالای 20 رقم کار کنم.

blackmak
دوشنبه 25 مهر 1390, 21:38 عصر
دوست من منم کاری با اعشار ندارم . انگار شما کدو تست هم نکردید و دارید قضاوت می کنید. BCMath توابعی برای اعمال عملیات ریاضی روی اعداد بزرگ داره که با اون شما میتونید هر عددیو با هر عددی جمع کنید تفریق کنید و ... حالا مشکل دوم شما نمایش عدد هستش که به صورت E نمایش داده میشه که فقط کافی از تابع number_format به صورت مثال استفاده کنید

idocsidocs
دوشنبه 25 مهر 1390, 21:58 عصر
دوست من منم کاری با اعشار ندارم . انگار شما کدو تست هم نکردید و دارید قضاوت می کنید. BCMath توابعی برای اعمال عملیات ریاضی روی اعداد بزرگ داره که با اون شما میتونید هر عددیو با هر عددی جمع کنید تفریق کنید و ... حالا مشکل دوم شما نمایش عدد هستش که به صورت E نمایش داده میشه که فقط کافی از تابع number_format به صورت مثال استفاده کنید
عملگر e باعث می شه که اعداد حذف بشن و بجاش از توان 10 استفاده می شه. یعنی عدد اصلی از بین می ره.در نتیجه تابع number_format نمی تونه عدد واقعی رو بدست بیاره.