Как разбить число на отдельные цифры?

Как мне разделить part1 на 2-3 цифры и поместить их в num1, num2 и num3?

int FMSTATION = 10250;

int update_display() {
  int fm_station = FMSTATION ;

  int part1;
  int part2;

  part1 = (FMSTATION / 100);
  part2 = (FMSTATION % 100);
  part2 = (part2/10);

  int num1 = ;
  int num2 = ;
  int num3 = ;
  int num4 = part2;

  matrix.writeDigitNum(0, num1, false);  //1st number on lcd
  matrix.writeDigitNum(1, num2, false);  //2nd number on lcd
  matrix.writeDigitNum(3, num3, true);   //3rd number on lcd and adds "."
  matrix.writeDigitNum(4, num4, false);  //4th number on lcd

  matrix.writeDisplay();
}

Я просмотрел Интернет сверху донизу, но не смог найти ответ. В конце концов, на ЖК-дисплее должно отображаться 102.5.

, 👍6


2 ответа


Лучший ответ:

9

% 10 возвращает последнюю цифру числа. При делении на 10 число сдвигается на одну цифру вправо.

Итак, если у вас есть число 10250 в виде целого числа, вы можете получить каждое число с помощью:

10250 % 10 = 0
(10250 / 10) % 10 = 5
(10250 / 100) % 10 = 2
(10250 / 1000) % 10 = 0
(10250 / 10000) % 10 = 1

Таким образом, ваш код можно записать так:

num4 = (fm_station / 10) % 10;
num3 = (fm_station / 100) % 10;
num2 = (fm_station / 1000) % 10;
num1 = (fm_station / 10000) % 10;

Не нужно возиться с переменными "part".

,

попробую, @Austinthemighty


1

Думаю, это поможет вам:

int FMSTATION = 10250;
int update_display() {
  int fm_station = FMSTATION ;

  int part1;
  int part2; 
  part1 = (FMSTATION / 100); //102
  part2 = (FMSTATION % 100); //50
  part2 = (part2/10); //5

  int num1 = part1/100; //1
  int num2 = (part1 % 100)/10; //0
  int num3 = part1%10; //2
  int num4 = part2; //5

  matrix.writeDigitNum(0, num1, false); //1-й номер на ЖК
  matrix.writeDigitNum(1, num2, false); //2-й номер на ЖК
  matrix.writeDigitNum(3, num3, true); // 3-й номер на ЖК-дисплее и добавляет "."
  matrix.writeDigitNum(4, num4, false); //4-й номер на ЖК

  matrix.writeDisplay();
}
,

Для отображения «num1» я бы также проверил, не равен ли он «0», прежде чем отображать его, и очистил бы цифру, если это так, чтобы «95,6» не отображалось как «095,6»., @jfpoilpret

Хорошо, я попробую, @Austinthemighty

Спасибо, это сработало, также я попытаюсь реализовать очистку цифры, @Austinthemighty