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

نام تاپیک: مشکل این کد محاسباتیم چیه ؟

  1. #1

    Question مشکل این کد محاسباتیم چیه ؟

    سلام
    این قطعه کد زمان ورود و خروج خودرو بهش میدم و محاسبات هزینه ای توقف در پارکینگو انجام میده
    فقط نمیدونم چرا وقتی totalHours بیشتر از 85 میشه هزینرو 0 نشون میده

    این قسمت زمان توقف در پارکینگ رو محاسبه میکنه :

    TimeSpan dif = outTime - inTime;
    float totalHours = float.Parse(dif.TotalHours.ToString());


    primaryTime و primaryPrice متغیرهایی هستن که زمان اولیه و هزینه اولیه را نگهداری میکنن مثلا 2 ساعت اول 1000 تومن

    secTime و secPrice هم زمان و مبلغ اضافی رو نگهداری میکنه . مثلا بعد از 2 ساعت اول هر 1 ساعت اضافی 500 تومن

    اینم کد محاسباتم :

    long finalPrice = 0;
    float secHours = totalHours - primaryTime;
    if (totalHours < primaryTime || totalHours == primaryTime)
    finalPrice = primaryPrice;
    else if (totalHours > primaryTime)
    {
    int temp = Convert.ToInt32(secHours / secTime);
    if (float.Parse(temp.ToString()) < (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice + secPrice;
    else if (float.Parse(temp.ToString()) == (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice;
    }


    چرا وقتی totalHours از 85 بیشتر میشه finalPrice صفر میشه ؟؟؟؟

  2. #2
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    یه خورده کدهات گنگه
    برنامتو بذار(همین یه تیکشو) تا اجرا کنیم و بفهمیم چی به چیه؟

  3. #3

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    اینم برنامه


    WindowsFormsApplication1.zip

  4. #4
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    خب ببین دوست من وقتی از
    if (float.Parse(temp.ToString()) < (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice + secPrice;
    else if (float.Parse(temp.ToString()) == (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice;

    استفاده میکنی باید حواستو جمع کنی که همه ی شرایط را در بر بگیری تا این اتفاق نیوفته
    اگر عدد 85 را دستی وارد کنی توی این کد و تریس کنی خواهی دید که finalPrice نه در if اول و نه در دومی محاسبه نمیشه چون اصلا شرطش را دارا نیست
    این مورد فقط برای 85 نیست و اگر شما 4 - 16 - 25 - 34 - 46 و ... را هم بذاری باز جواب صفر میشه چون هیچ وقت داخل هیچ کدوم ازین if ها نمیفته
    راه حل
    درین جور موارد سعی کن همیشه یه else ، آخره شرطت بذاری که اگر هیچکدوم اجرا نشد این else آخری اجرا بشه
    مثل این

    if (float.Parse(temp.ToString()) < (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice + secPrice;
    else if (float.Parse(temp.ToString()) == (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice;
    else
    finalPrice = temp * secPrice + primaryPrice;

  5. #5
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    یه نکته مهم دیگه اینکه تشکر یادت نره

  6. #6

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    نقل قول نوشته شده توسط zayens مشاهده تاپیک
    خب ببین دوست من وقتی از
    if (float.Parse(temp.ToString()) < (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice + secPrice;
    else if (float.Parse(temp.ToString()) == (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice;

    استفاده میکنی باید حواستو جمع کنی که همه ی شرایط را در بر بگیری تا این اتفاق نیوفته
    اگر عدد 85 را دستی وارد کنی توی این کد و تریس کنی خواهی دید که finalPrice نه در if اول و نه در دومی محاسبه نمیشه چون اصلا شرطش را دارا نیست
    این مورد فقط برای 85 نیست و اگر شما 4 - 16 - 25 - 34 - 46 و ... را هم بذاری باز جواب صفر میشه چون هیچ وقت داخل هیچ کدوم ازین if ها نمیفته
    راه حل
    درین جور موارد سعی کن همیشه یه else ، آخره شرطت بذاری که اگر هیچکدوم اجرا نشد این else آخری اجرا بشه
    مثل این

    if (float.Parse(temp.ToString()) < (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice + secPrice;
    else if (float.Parse(temp.ToString()) == (secHours / secTime))
    finalPrice = temp * secPrice + primaryPrice;
    else
    finalPrice = temp * secPrice + primaryPrice;
    بسیار بسیار ممنووووووووون

    در واقع چون temp رو به int تبدیل میکنم مقدارش گرد میشه و به عددی بزرگتر از secHours / seTime تبدیل میشه که تو شرطام نیست

    ایووول داداش

  7. #7
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

    نقل قول: مشکل این کد محاسباتیم چیه ؟

    نقل قول نوشته شده توسط hackman مشاهده تاپیک
    بسیار بسیار ممنووووووووون

    در واقع چون temp رو به int تبدیل میکنم مقدارش گرد میشه و به عددی بزرگتر از secHours / seTime تبدیل میشه که تو شرطام نیست

    ایووول داداش
    عزیزم منظورم از تشکر این بود که از دکمه ی تشکر واقع در گوشه ی پست هام استفاده کنی!
    قابلی نداشت

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

  1. مشکل این قطعه کد چیه ؟
    نوشته شده توسط ایمان اختیاری در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: دوشنبه 02 آذر 1388, 21:31 عصر
  2. دوستان مشکل این کد من چیه ؟
    نوشته شده توسط mpmsoft در بخش SQL Server
    پاسخ: 6
    آخرین پست: یک شنبه 24 آذر 1387, 16:59 عصر
  3. سوال: مشکل این دستور sql چیه ALTER TABLE table1 RENAME tel to mobile
    نوشته شده توسط m_vb1386 در بخش Access
    پاسخ: 1
    آخرین پست: چهارشنبه 17 مهر 1387, 15:26 عصر
  4. سوال: مشکل این کد Update چیه
    نوشته شده توسط mpmsoft در بخش SQL Server
    پاسخ: 2
    آخرین پست: شنبه 23 شهریور 1387, 09:52 صبح
  5. مشکل این عبارت SQL چیه ؟
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: یک شنبه 12 مهر 1383, 13:51 عصر

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

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