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

نام تاپیک: لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

  1. #1
    کاربر دائمی آواتار mohammad_2039
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    360

    لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

    با سلام به دوستان گرامی.
    من میخوام یکی از فیلدهای جدول رو بخونم و به ترتیب از بالا به پایین در یه عدد ضرب کنم و نتیجه رو در یه تیبل دیگه نمایش بدم. این کار رو با کد زیر انجام میدم.


    SqlCommand cmd = new SqlCommand("select * from tbl_table", sqlConnection1);
    sqlConnection1.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    int FieldCount = reader.FieldCount;
    object[] Values = new object[FieldCount];
    while (reader.Read())
    {
    reader.GetValues(Values);


    int mablag = reader.GetInt32(0);
    for (int n = 2; n != FieldCount; n++)
    {

    double kol = (mablag * 700);

    //statments for insert into DataBase
    }
    }
    reader.Close();
    sqlConnection1.Close();

    مشکل اینجاست که وقتی اعداد کوچک و در حد میلیون باشه خیلی خوب جواب میده و مشکلی نداره اما وقتی اعداد به چند صد میلیون و میلیارد میرسه نتایج بدست اومده بسیار عجیب و غریبه با اینکه دو عدد مثبت در هم ضرب میشن اما نتایج اعداد بزرگ، نا مرتبط و منفی درمیادهر چقدر هم نوع های داده رو تغییر میدم نتیجه نمی گیرم. این خط از کد:

    int mablag = reader.GetInt32(0);
    فقط همین حالت رو قبول میکنه و در بقیه نوع های داده که استفاده میکنم خطای invalid cast میده. نوع داده در جدول bigint هست. خواهش میکنم کمکم کنید. متشکرم

  2. #2
    کاربر دائمی آواتار Shahram_Shobeiri
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    315

    نقل قول: لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

    به نظر من راه منطقی تر اینه که از کوئری زیر استفاده کنی و عملیات ضرب رو در db انجام بدی. امتحان کن شاید درست بشه

    SELECT a * 700 FROM tbl_tab

  3. #3
    کاربر دائمی آواتار mohammad_2039
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    360

    نقل قول: لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

    من چون میخواستم کد طولانی نشه 700 رو گذاشتم، تو برنامه عدد رو از ورودی و طی فرایند دیگه ای دریافت میکنه.

  4. #4
    کاربر دائمی آواتار mohammad meta
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران
    پست
    125

    نقل قول: لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

    سلام
    دوست عزیز دلیل اینکه عدد منفی می شه اینه که از محدوده integer بالا میزنه.دلیلشم اینه که روی sign bit عدد اون مقدار اضافه نوشته میشه و اون bit را یک می کنه یک شدن sign bit نشان دهنده عدد منفی است.شما اگر int را به double تبدیل کنید مشکلتون حل می شه.

  5. #5

    نقل قول: لطفا کمک کنید، نتیجه محاسبات غیر منطقی میشه ؟؟!!

    شما مقادیر داده هات از int32 میزنه بالاتر برا همین .....
    از UInt64 استفاده کن

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

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