منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[C#.NET] القسمة على عدد عشري - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [C#.NET] القسمة على عدد عشري (/showthread.php?tid=45608)



القسمة على عدد عشري - h2551996 - 02-03-23

السلام عليكم
لدي تكست بأسم lblTotal
احتاج اقسم الناتج الذي بداخله على 1.15
بحيث مثلا الناتج الاجمالي 100 
يقوم هو بعمل حسابات 
ليصبح 100/ 1.15 = 86.95652173913043


RE: القسمة على عدد عشري - Taha Okla - 02-03-23

وعليكم السلام :

كود :
double N1 = double.Parse(lblTotal.Text);
textBox1.Text = (N1 / 1.15).ToString();



RE: القسمة على عدد عشري - h2551996 - 03-03-23

(02-03-23, 09:56 PM)Taha Okla كتب : وعليكم السلام :

كود :
double N1 = double.Parse(lblTotal.Text);
textBox1.Text = (N1 / 1.15).ToString();

ممكن تعدل الكود الى هنا
لان كل الاوامر مغلقه عليه\
كود :
private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
       {
           decimal totalBill = 0, totalDiscount = 0, totalTax = 0, countItems = 0;

           int index = e.RowIndex;
           dgvPSale.ColumnCount = 9;
           if (index >= 0)
           {
               DataTable tblQty = new DataTable();
               tblQty.Clear();
               tblQty = db.readData("select * from Products where Prod_ID = " + dgvPSale.Rows[index].Cells[0].Value + "", "");
               decimal prodQty = Convert.ToDecimal(tblQty.Rows[0][3]);

               decimal itemQty = 0;
               //if (prodQty >= Convert.ToDecimal(dgvPSale.Rows[index].Cells[3].Value))
               //{
                   itemQty = Convert.ToDecimal(dgvPSale.Rows[index].Cells[3].Value);
               //}
               //else
               //{
               //    alert.goAlert("الكمية المتاحة في المخزن غير كافية", "تحذير", frmAlertNotifications.enmType.warning);
               //    itemQty = prodQty;
               //    dgvPSale.Rows[index].Cells[3].Value = prodQty;

               //}
               decimal itemPrice = Convert.ToDecimal(dgvPSale.Rows[index].Cells[4].Value);
               
               decimal itemDiscount = Convert.ToDecimal(dgvPSale.Rows[index].Cells[5].Value);

               decimal itemNet = (itemQty * itemPrice) - itemDiscount;
               dgvPSale.Rows[index].Cells[6].Value = itemNet;
               decimal itemTax = itemNet * (Properties.Settings.Default.SaleTaxPercent / 100 ); ;// vvvvvvvvvote

               dgvPSale.Rows[index].Cells[7].Value = Math.Round(itemTax, 2);
               dgvPSale.Rows[index].Cells[8].Value = Math.Round(itemNet + itemTax, 2);

               for (int i = 0; i <= dgvPSale.Rows.Count - 1; i++)
               {
                   totalBill += Convert.ToDecimal(dgvPSale.Rows[i].Cells[8].Value);
                   totalDiscount += Convert.ToDecimal(dgvPSale.Rows[i].Cells[5].Value);
                   totalTax += Convert.ToDecimal(dgvPSale.Rows[i].Cells[7].Value);
                   countItems = Convert.ToDecimal(dgvPSale.Rows.Count);

                   //يتم ازالة السلكشن من الداتا جرد فيو وجعل السيليكشن على اخر صف للتسهيل على اليوزر
                   //dgvSaleBills.ClearSelection();
                   //dgvSaleBills.FirstDisplayedScrollingRowIndex = dgvSaleBills.Rows.Count - 1;
                   //dgvSaleBills.Rows[dgvSaleBills.Rows.Count - 1].Selected = true;
               }
               lblTotal.Text = Math.Round(totalBill, 2).ToString();
               lblTotalDiscount.Text = Math.Round(totalDiscount, 2).ToString();
               lblTotalTax.Text = Math.Round(totalTax, 2).ToString();
               lblCount.Text = (countItems).ToString();

               //for (int i = 0; i <= dgvPSale.Rows.Count - 1; i++)
               //{
               //    totalBill += Convert.ToDecimal(dgvPSale.Rows[i].Cells[6].Value);
               //    countItems = Convert.ToDecimal(dgvPSale.Rows.Count);
               //}

               //lblCount.Text = countItems.ToString();
               //lblTotal.Text = Math.Round(totalBill, 2).ToString();
   
           }
       }
التعديل في هذا السطر
بيحث لما يقرا الضريبة اللي قيمتها 15 % يرجع يخصمها مره اخرى
               decimal itemTax = itemNet * (Properties.Settings.Default.SaleTaxPercent / 100 ); ;// vvvvvvvvvote


RE: القسمة على عدد عشري - Taha Okla - 03-03-23

اللي صنع البرنامج فقط ممكن يفهم شو معنى كل هذه المتغيرات..

امشي مع البرنامج بالـ Debug  خطوة خطوة وبتصل للنقطة اللي صار فيها الخطأ..


RE: القسمة على عدد عشري - sanyor77 - 26-03-23

حسنا، إليك الحل النهائي: بلغة Python:

كود :
def divide_by_1_point_15(lblTotal):
 return round(float(lblTotal) / 1.15, 2)

lblTotal = 100
result = divide_by_1_point_15(lblTotal)
print("The result is:", result)


بلغة C#:

كود :
double N1 = double.Parse(lblTotal.Text);
textBox1.Text = (N1 / 1.15).ToString("F");


هذا هو الحل النهائي للمشكلة التي توصلت إليها خلال محادثاتكم. أما بالنسبة للكود الذي أرسلته، فهو يحسب الإجمالي الخاص بالصنف بعد خصم الخصم وضريبة المبيعات ويخزن النتائج في الخلايا المخصصة لها.