Округлите до 10 в Dart - PullRequest
0 голосов
/ 21 июня 2020
• 1000 и есть 10 карточек на странице, поэтому если есть 11 карточек, должно быть 2 страницы.

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Чтобы округлить число до кратного некоторого множителя, вы можете:

/// Round [number] up to a multiple of [factor].
///
/// The [factor] must be greater than zero.
int roundUp(int number, int factor) {
  if (factor < 1) throw RangeError.range(factor, 1, null, "factor");
  number += factor - 1;
  return number - (number % factor);
}

Соответствующий roundDown, который вы можете определить roundUp в терминах:

int roundDown(int number, int factor) {
  if (factor < 1) throw RangeError.range(factor, 1, null, "factor");
  return number - (number % factor);
}
int roundUp(int number, int factor) => roundDown(number + (factor - 1), factor);

Округление в сторону плюс / минус бесконечности. Если вместо этого вы хотите округлить в сторону / от нуля, вы можете использовать:

int roundTowardsZero(int number, int factor) {
  if (factor < 1) throw RangeError.range(factor, 1, null, "factor");
  return number - number.remainder(factor);
}
int roundAwayFromZero(int number, int factor) => 
    roundTowardsZero(number + number.sign * (factor - 1), factor);

Поскольку этот подход использует только целые числа, он относительно безопасен от потери точности, но может переполняться в самом конце целого числа диапазон (или если вы используете очень и очень большие коэффициенты). Если вы хотите обезопасить себя от этого, нам нужно добавить проверку, не переполняется ли number + factor - 1. В большинстве практических случаев это не имеет значения.

0 голосов
/ 21 июня 2020

Все, что вам нужно сделать, это:

var test = 11;
print((test / 10).ceil() * 10); // 20

Разделив число на 10 (в данном случае это 11), вы получите 1,1.

Когда вы сделаете (1.1).ceil(), вы будет 2.

Теперь умножьте на 10, чтобы получить степень 10.

...