Member 12349103 Ответов: 1

Слишком много десятичных знаков


Как я мог добавить математику.Круглый или потолок к моему коду, чтобы округлить вверх или вниз?
Я импортирую файл Excel в Datagridview и делаю математику.




private void button2_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow rows in dataGridView1.Rows)
            {
                


                int H = Convert.ToInt32(rows.Cells[7].Value ?? 0);
                decimal I = Convert.ToDecimal(rows.Cells[8].Value ?? 0);
                int L = Convert.ToInt32(rows.Cells[11].Value ?? 0);
                var J = H == 0 ? 0: H * I / L;
                rows.Cells[9].Value = J;

                //ULD Stack =rounddown(106/S2,0)
                decimal S = Convert.ToDecimal(rows.Cells[18].Value ?? 0);
                int A = 106;
                decimal T = A / S;
                rows.Cells[19].Value = T;

                //Stacks Wide =rounddown(96/R2,0) 
                int R = Convert.ToInt32(rows.Cells[17].Value);
                int B = 96;
                int U = B / R;
                rows.Cells[20].Value = U;

                //Stacks Day =roundup(J2/T2,0)                              
                double j = Convert.ToDouble(rows.Cells[9].Value ?? 0);
                double t = Convert.ToDouble(rows.Cells[19].Value ?? 0);
                int V = (int)Math.Ceiling(Convert.ToDouble(j) / Convert.ToDouble(t));
                rows.Cells[21].Value = V;

                //Linear FT Stack =Q2/12
                Decimal Q = Convert.ToInt32(rows.Cells[16].Value ?? 0);
                var C = 12 ;
                Decimal W = Q / C;
                rows.Cells[22].Value = W;

                //Raw Linear Ft Day =(V2*W2)/U2                                    
                int V21 = Convert.ToInt32(rows.Cells[21].Value ?? 0);
                var W22 = Convert.ToDecimal(rows.Cells[22].Value ?? 0);
                int U20 = Convert.ToInt32(rows.Cells[20].Value ?? 0);
                var X = V21 == 0 ? 0 : V21 * W22 / U20;
                rows.Cells[23].Value = X;}


Что я уже пробовал:

Множество исследований методом проб и ошибок.

Afzaal Ahmad Zeeshan

И с какой же ошибкой вы сталкиваетесь?

Sinisa Hajnal

.NET имеет математическую библиотеку, в которой есть все для ваших нужд округления.

1 Ответов

Рейтинг:
12

ali_jobran

вы можете получить потолок вот так

// Get ceiling of double value.
       double value1 = 123.456;
       double ceiling1 = Math.Ceiling(value1);


и вы можете читать

Математика.Метод Округления (Система) | Microsoft Docs[^]

using System;

public class Example
{
   public static void Main()
   {
      Console.WriteLine("{0,5} {1,20:R}  {2,12} {3,15}\n", 
                        "Value", "Full Precision", "ToEven",
                        "AwayFromZero");
      double value = 11.1;
      for (int ctr = 0; ctr <= 5; ctr++)    
         value = RoundValueAndAdd(value);

      Console.WriteLine();

      value = 11.5;
      RoundValueAndAdd(value);
   }
   
   private static double RoundValueAndAdd(double value)
   {
      Console.WriteLine("{0,5:N1} {0,20:R}  {1,12} {2,15}", 
                        value, Math.Round(value, MidpointRounding.ToEven),
                        Math.Round(value, MidpointRounding.AwayFromZero));
      return value + .1;
   }
}