نمایش نتایج 1 تا 7 از 7

نام تاپیک: تابع float

  1. #1

    تابع float

    sum = sum + (i+2) / ((float)(i * (i + 1)));
    در اين خط برنامه تابع float چه کاری را انجام می دهد؟

  2. #2

    نقل قول: تابع float

    سلام دوست عزیز، کلمه ی float که در اینجا نوشته شده یک تابع نیست بلکه یک explicit inline casting هست و cast کردن در برنامه نویسی به این معنیه که شما موقتا یه نوعی رو به نوع دیگه تبدیل میکنید در این جا i*i+1 یه عدد صحیح است ولی شما میایید با این Cast این عدد صحیح رو به یک عدد float تبدیل میکنید در نتیجه نتیجه ی تقسیمی هم که انجام میدهید یه عدد float هست.
    به عنوان مثال دیگه فکر کن شما یه متغیر float avg داری و میخوای تو این متغیر میانگین سه تا عدد 2 و 2و 3 رو بریزی اگه بیای مستقیما این سه تا عدد رو جمع کنی و تقسیم بر سه کنی میانگین این سه عدد بر خلاف انتظار میشه 2 . مثلا اگه بنویسی avg=(2+2+3)/3 خواهی دید که avg دو شد ولی اگه بیای موقتا جمع سه عدد رو به float ، کست cast کنی جواب درست در میاد .اینجوری avg=(float)(2+2+3)/3 تقسیم یه عدد صحیح به صحیح یه عدد صحیحه ولی یه تقسیم یه float به صحیح float هست.
    یه مثال دیگه میزنم که دیگه مطلب جا بیوفته فرض کن یه متغیر داری به اسم int myint و یه متغیر دیگه داره که اینطوری تعریفش کردی object num=10 همونطور که مشخصه نوع num یه عدد صحیحه ولی به این حال تو نمیتونی بیای بگی myint=num چون نمیتونی (البته گاهی اوقات برای برخی از cast ها که به implicit معروف هستند این کار به صورت خودکار و ضمنی انجام میشه) خلاصه برای اینکه num رو بریزی توی myint میای از cast استفاده میکنی و مینویسی myint=(int)num که در اینصورت مقدار myint میشه 10 و نوع num هم تغییر نمیکنه و همون object میمونه.
    موفق باشی

  3. #3

    نقل قول: تابع float

    در برنامه اين float را در مخرج برده اگر در صورت بنوطسيم چرا جواب نمی دهد؟مثلا(i/i+1)float همان خارج قسمت را می دهد ولی i/float (i+1) جواب دقيق می دهد.چرا؟

  4. #4

    نقل قول: تابع float

    ميشه لطف کنيد جواب دهيد

  5. #5

    نقل قول: تابع float

    (float)(i/i+1)

    حمیدجان تو این کد میاد اول i رو تقسیم بر خودش میکنه که میشه 1 و بعد بعلاوه 1 میکنه که میشه 2
    اما دومین کد درسته
    i/(float) (i+1)

    چون میاد اول i+1 میکنه و بعد i رو تقسیم بر اون میکنه
    یعنی اگه مثلا i=10 باشه اول میاد 1+10 میکنه که میشه 11 بعد میاد 10 رو تقسیم بر 11 میکنه. به خاطر همین این کد جواب دقیق رو میده

  6. #6

    نقل قول: تابع float

    ببخشيد پس چرا 2 ورودی مثل a,b می گيريم و a/b را در برنامه می نويسيم مقدار دقيق را می دهد ولی در مثال بالا جواب نمی دهد؟

  7. #7

    نقل قول: تابع float

    نقل قول نوشته شده توسط hamid.hashemi202 مشاهده تاپیک
    ببخشيد پس چرا 2 ورودی مثل a,b می گيريم و a/b را در برنامه می نويسيم مقدار دقيق را می دهد ولی در مثال بالا جواب نمی دهد؟
    شما با اولویت ها اشنایی ندارید
    ببین در اعمال ریاضی در برنامه اولین اولیت را پرانتز داره
    بزار رو مثال خودت بگم یه کمی بهتر بفهمی
    ببین
    a/b فقط 2 تا عدد هستن یکی a , دیگری b خوب اینجا عملی که باید انجام بشه فقط و فقط یک تقسیم هست ولی اگر مثلا a+b*c/d+e*f را داشته باشیم نتیجه کاملا اشتباه در میاد (ساده بخوام بگم خیلی اشتباه میکنه ولی ساده اینه که تیکه اول را که حساب کرد درجا تقسیم میکنه بر d تنها و بعد حاصل را جمع و ضرب میکنه)
    برا این که درست در بیاد باید اینجوری بنویسیمش (a+b)*c)/((d+e)*f)) اینجوری اول حاصل جمع a, b را حساب میکنه بعد در C ضرب میکنه بعد حاصل جمع d,e را حساب میکنه و در f ضرب میکنه و نهایتا نتیجه این دوتا ( ابی و قرمز )را بر هم تقسیم میکنه کخ درست در میاد
    امیدوارم بفهمید چی میگم
    ببخشید اگر بد توضیح دادم (درباره اولویت های اعمال ریاضی ذر برنامه نویسی سرچ کن میفهمی چی میگم)
    موفق باشید

    ---------ادیت----------
    بیا داداش سرچ کن بعد تاپیک بزن همینجوری دستت خوبه تو تاپیک زدن ها :)
    بیا این اولویت ها همینجا میگم که بدونی
    1: ( )
    2: ^
    3: * , /
    4: \
    5: باقیمانده %
    6: + , -

    یعنی به ترتیب در یک محاسبه ی ریاضی اول این ها را به ترتیب حساب میکنه و بعد میره جلو همینجور یعنی مثلا این 1+2*3+5/4-7 در این اول میاد پرانتز چک میکنه میبینه نداره میره توان بازم نداره میره * و تقسیم همزمان این 2 را چک میکنه یعنی در این مثال5/4 و 3*2 میکنه و نهایتا بقیه تا میرسه به + و منها جواب های به دست اومده را همه را با هم جمع و تفریق میکنه !

    اوکی ؟
    الان مفید واقع شد برای شما ؟
    آخرین ویرایش به وسیله mehrdad1991h : دوشنبه 19 فروردین 1392 در 02:45 صبح

تاپیک های مشابه

  1. تابع لود کردن یک float به اخرین عضو m128__
    نوشته شده توسط UfnCod3r در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: شنبه 10 فروردین 1392, 12:21 عصر
  2. چگونگی تعریف تابع با دو خروجی ؟؟
    نوشته شده توسط m_reza در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: سه شنبه 10 تیر 1382, 16:24 عصر
  3. چگونه با اکتیوکسها مانند یک تابع رفتار کنم؟
    نوشته شده توسط توسلی در بخش کامپوننت ها و ابزارهای کاربردی در VB6
    پاسخ: 4
    آخرین پست: دوشنبه 01 اردیبهشت 1382, 17:05 عصر
  4. تابع انتخاب تصادفی یک فیلد از بین رکوردهای بانک اطلاعاتی
    نوشته شده توسط hesam_din در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: جمعه 23 اسفند 1381, 04:51 صبح
  5. برای برنامه هاتون تابع تعریف کنید
    نوشته شده توسط (امید) در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: پنج شنبه 22 اسفند 1381, 00:21 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •