Сократить число flоat до одной цифры после "."

Доброго дня, имеется mega256 которая по сериал передает данные с датчиков в том числе на nodemcu которая в свою очередь формирует html страничку с таблице с этими данными. Данные приходят
так

struct Package {
  float tempesp1; 
  float tempesp2; 
  float tempesp3;
  float tempesp4;
  float tempesp5;
  float tempesp6;
  float termoparaesp;
  float davbar1esp;
  float nasoskotelesp;
  float kwtkotesp;
  float kwtdomesp;
  float ledkotpinesp; 
  float ledvenpinesp; 
  float lednasospinesp; 
} package;

формат данный такой 25.60 то есть после точки два числа, необходимо сократить до одного числа, что бы было так 25.6 и сделать это на nodemcu, то есть как сократить в serial при отправке я знаю, но мне нужно именно после получения на nodemcu…

До отправки умножь на 10 и передавай только целую часть.

нужно после получения на стороне nodemcu это сделать

Это не формат данных, это формат вывода, печати

Не пишите бреда. Это у вас ПОКАЗЫВАЕТСЯ при печати две цифры после запятой. А сколько там на самом деле - зависит от размерности целой части.

опять же бред. Не надо ничего “сокращать”, просто не печатайте больше одной цифры после точки и все.

Добавлю для ясности - никаким образом “сократить” встроенный тип float вы не сможете, его формат фиксирован и в нем 6-8 значащих цифр (а не две, как вы думали).
Найдите другой способ решить свою проблему (если она вообще есть).

еще раз повторяю они на nodemcu при хотят в таком формате именно две цифры после “.” не 6-8…

Интересно почему например этот float можно сократить например так
float tempesp1 = “25.6000”;
myGLCD.printNumF(tempesp1, 1); или так Serial.print(tempesp1, 1); а вот ручками никаким образом уже никак?

потому что это никакое не “сокращение” числа, а просто скрытие лишних разрядов при печати. Изменяется только вид числа на экране, сам float при этом не “сокращается”.
Именно об этом я вам и написал.

Это не так.

Что такое ручками и зачем вам это?
Конечную задачу опишите.

Только не пишите, что вам надо “сократить” флоат - это никому не нужно и не может быть задачей.

На экран не влезает, думаю.

1 лайк

Да, что бы на html странице было меньше данных там не нудно это…
Ручками это значит сделать тоже что и делает функции myGLCD.printNumF(tempesp1, 1); и Serial.print(tempesp1, 1) обрезая, сокращая

Смотрите sprintf

А лучше покажите код как вы выводите число на html страницу

А кто Вам сказал, что так можно?

Плюньте ему в рожу - он Вам брешет. Так нельзя!

Попробуйте вам понравится Serial.print(“25.6000”, 1);

void handleRoot() {

  String message = "<head>";
          message += "<meta http-equiv=\"Content-Type\" content=\"text/html;\"/>";  
          message += "<meta charset=\"utf-8\"/>";
          message += "<title>1</title>";
          message += "</head>";
          message += "<b>";
          message += package.tempesp1;
          message += "</b>";

Новички будут советовать волкам, как овец кушать? Смишно )))

Прочитайте еще раз внимательно:

А сами-то пробовали?

Ни одна из Ваших строк

не работает и работать не может, даже если в них исправить кавычки на нормальные.

Вы бы эта … прежде, чем советовать кому-то пробовать, пробовали бы сами, ладно?

1 лайк

Вы сейчас просто, стебетесь? или реально просто когда нет ответа на вопрос, начинаете докатываться до “запятых”

Большая разница между “скрытием” и обрезать? в поставленно вопросе в первом посте, написал обрезать до одного символа после точки, даже блин пример привел и расписал что именно нужно, но нет…

Большая. Здесь скрытие лишних символов реализовано в классе Serial, вывести так на html-страницу не выйдет

Что значит “нет”? Вам еще в первом ответе дали рабочий совет. Если вы его не поняли, то мы-то при чем?

А Вы, простите, идиот?
В программировании такие вот “запятые” и составляют 99% ошибок с которыми сюда приходят новички.
Привыкайте четко и правильно писать, вплоть до запятой - иначе в программировании вы постоянно будете выискивать, почему ваш код не работает.

огромная… Спросите у кота - что он выберет - скрыть яйца или отрезать?