Прошу прокомментировать код

Блин, это у меня ниже экрана было и я уже успел написать про это прежде, чем прочитать :slight_smile:

Но, не зря я говорил, что если лишнее убрать, то заметится ещё что-нибудь. Заметилось!

Нельзя так беспечно относиться к остатку – он всегда имеет знак частного. Вот смотрите, я печатаю точно как Вы и точно с теми же типами данных – любуйтесь.

void setup(void) {
	Serial.begin(9600);

	const uint8_t _del = 10;
	const int16_t & _value = -156;
	
	const int16_t val = _value / _del;
	const int16_t fract = _value % _del;
	Serial.print(val);
	Serial.print(".");
	Serial.println(fract);
}

void loop(void) {}

//	РЕЗУЛЬТАТ
//	-15.-6

Вполне допускаю, что это не актуально в конкретной задаче, но тут дело глобальнее – нельзя привыкать так писать – эта привычка когда-нибудь подведёт, а ошибка-то подленькая – пока числа положительные, она не проявляется, так что заметите Вы её, когда в программе будет уже 100500 строк и когда этот участок Вы будете считать старым, давно и надёжно работающим. Просто на рефлексах должно быть – если числа знаковые, то аккуратно работаем с остатком.

Но, и это не всё. У меня тут было как-то эссе – крик души о крайне коварной привычке смешивать в одних операциях знаковые и беззнаковые числа (как у Вас _value – знаковое, а _del – беззнаковое). Вот, казалось бы, ну смешали Вы и смешали, “ачётакова?”. А Вот Вы попробуйте в моём примере (или у себя) поменять тип _del с uint8_t на uint16_t – обещаю, что ахренеете от результата.