PDA

View Full Version : سوال: باگ در ruby



armin.4838
یک شنبه 10 شهریور 1392, 14:37 عصر
سلام
من تازه شروع به یادگیری ruby کردم و موقع کارکردن با اون یه مشکلی پیدا کردم
وقتی باقیماده در تقسیم دو عدد 5.1 و 2 رو حساب میکنم بجای جواب 1.1 به من 1.0999999999999996 میده
نمیدونم این باگ هست یا اینکه من دارم اشتباه میکنم
اگه میشه کمک کنید
تصویرشم توی ضمیمه هست

SlowCode
یک شنبه 10 شهریور 1392, 19:46 عصر
سلام
من روبی کار نکردم ولی تاجایی که میدونم % علامت باقی مانده تقسیم هست و اون جوابی که به شما داده کاملا درست هست، شما اگه عدد 1.0999999999999996 رو گرد کنی میشه همون 1.1 دیگه!

armin.4838
دوشنبه 11 شهریور 1392, 00:59 صبح
مشکل منم همینه میخوام بدونم چرا جواب 1.1 نمیشه؟دلیل خاصی داره؟
توی زبانهای دیگه هم اینجوری هست؟
البته توی php امتحان کردم ولی کلا عدد صحیح پس میده هر کاری کردم اعشاری نداد :)
ممنون اگه کمکم کنید

SlowCode
سه شنبه 12 شهریور 1392, 15:22 عصر
مشکل منم همینه میخوام بدونم چرا جواب 1.1 نمیشه؟دلیل خاصی داره؟
توی زبانهای دیگه هم اینجوری هست؟
البته توی php امتحان کردم ولی کلا عدد صحیح پس میده هر کاری کردم اعشاری نداد :)
ممنون اگه کمکم کنید
چون دقیق ترین جواب ممکن همینه!
نه تو همه زیان ها اینطوری نیست. مثلا تو vb6 جواب 1 رو داد.
و این دقت خیلی بالای روبی رو نشون میده.

MSK
چهارشنبه 20 شهریور 1392, 13:23 عصر
اگه با c و c++ هم امتحان کنید همین جواب رو می‌گیرید.
دلیلش خیلی سادست. برای فهمیدنش این مثال رو در نظر بگیرید که مثلا برای نوشتن مقدار دقیق عدد پی چقدر کاغذ نیاز دارید؟ بی‌نهایت!! مقدار ۱/۱ هم در مبنای دو بی‌نهایت رقم داره؛ در نتیجه وقتی سعی می‌کنه توی ۶۴ بیت ذخیرش کنه دچار مقداری خطای گرد کردن میشه. :لبخندساده: