چرا جواب تفریق این دو عدد ساده درست نمی آید؟

سوال

با عرض سلام و خسته نباشید!
چرا در هر زبان برنامه نویسی(تقریبا) زمانی که عدد (۸٫۵ – ۸٫۶) رو میکنی به جای ۰٫۱ جواب ۰٫۰۹۹۹۹۹۹۹۹۹۹۹۹۹۹۶۴ می شود؟ اما وقتی خود ۰٫۱ را چاپ می کنیم این اتفاق نمی افتد؟
ممنون.

در حال بررسی 0
Catnoir 1 سال 5 پاسخ ها 204 دیده شده 1

پاسخ ها ( ۵ )

  1. dar java adade ashari ya float hamishe be soorate dorost chap nemishe va be khatere in hast ke vaghti javabe adad be binari tabdil mishe 64 bit ya 32 bit javabe adad bad az 30 ta ragham cut mishe va vase hamin hast ke javab be soorate dorost chap nemishe ,

  2. علت اینکه این جواب میاد اینکه داخل کامپیوتر اعداد به صورت باینری ذخیره میشن یعنی در مبنای دو به خاطر همین عدد به صورت تقریبی  ذخیره میشه و وقتی دوباره عدد به مبنای ده برمیگرده عدد از عدد اصلی یکم کمتر میشه .

  3. سلام

    من این کد رو به زبان C و ++C نوشتم که داره بدون مشکل کار میکنه!

    احتمال داره مشکل از data type استفاده شده باشه..

    • و اینکه من حس میکنم چون توی کدتون از فرمت استفاده می کنید خودش خودکار گردش می کنه اگه میشه مستقیم چاپش کنید بدون ریختنش توی هیچ متغیر یا استفاده از فرمت برای چاپ. ممنون.

    • سلام به شما دوست عزیز و ممنون از پاسختون اما من عکس کد ران شدم رو میزارم خودتون ببینید‌ :
      همون طور که داخل عکس میبینید که به زبان جاوا هست این برنامه هیچ کد خاصی نداره و اصلا هیچ نوع داده ای هم براش ست نکردم فقط دو عدد رو از هم کم کردم و تمام.
      اگه میشه کمکم کنید!

ارسال یک پاسخ