Как разбить число на отдельные цифры?
Как мне разделить 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
.
@Austinthemighty, 👍6
2 ответа
Лучший ответ:
% 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".
Думаю, это поможет вам:
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
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- устаревшее преобразование из строковой константы в 'char*'
попробую, @Austinthemighty