Как я могу использовать Math Ceiling RoundUp Как определить четное нечетное число - PullRequest
0 голосов
/ 09 сентября 2011

Мне нужно напечатать данные из DataGridView на обеих сторонах предварительно напечатанной формы, но:

  1. У каждой стороны есть разное расположение для этой информации.
  2. Каждая сторона может хранить информацию только из строк дерева, поэтому:
  3. 1-й, 2-й и 3-й ряд идут на стороне 1;
  4. 4-й, 5-й и 6-й ряд переходят на сторону 2;
  5. 7-й, 8-й и 9-й ряд переходят на сторону 1;
  6. 10, 11 и 12 идут на сторону 2; и т. д.

Я выберу группу для печати. ​​

Я планирую сделать это следующим образом: enter image description here

  1. ((row.Index) +1) / 3,
  2. округлите его, без десятичных знаков, чтобы получить целое число (как в приведенном выше Excel изображение)
  3. MOD это целое число на 2 (как на картинке выше).

Если результат этого мода на 2 равен 1, то он напечатает расположение Стороны 1, если результат этого MOD на 2 равен 0, то он напечатает расположение Стороны 2.

  • Как мне это сделать в C #? Я использую VS2010 Express Edition. Также я хотел использовать System.Math.Ceiling, но я получил пространство имен, десятичное, предупреждения или ошибки с двойной точностью и числами с плавающей точкой.

1 Ответ

6 голосов
/ 09 сентября 2011

Я не вижу, что вам нужно использовать что-то подобное:

int zeroBasedRow = row - 1;
int side = ((zeroBasedRow / 3) % 2) + 1;

Тестовый код:

using System;

class Test
{
    static void Main(string[] args)
    {
        for (int row = 1; row <= 12; row++)
        {
            int zeroBasedRow = row - 1;
            int side = ((zeroBasedRow / 3) % 2) + 1;
            Console.WriteLine("Row {0} goes on side {1}", row, side);
        }
    }
}

Выход:

Row 1 goes on side 1
Row 2 goes on side 1
Row 3 goes on side 1
Row 4 goes on side 2
Row 5 goes on side 2
Row 6 goes on side 2
Row 7 goes on side 1
Row 8 goes on side 1
Row 9 goes on side 1
Row 10 goes on side 2
Row 11 goes on side 2
Row 12 goes on side 2
...