Проблема отображения переменной double

поэтому у меня проблема с отображением двойной переменной в OLED & ИК-пульт дистанционного калькулятора, например, (с использованием u8g2):

displayTextOnRight(String(100000, 0)); //бывший. пустоты и числа

Отображается: " " Но когда я установил отл. 99999 отображается: "99999"

То же самое с

displayTextOnRight(String(1000.00, 2)); 

Также ничего не отображается. (100,00 отображает 100,00)

Я попробовал значения ниже нуля, и это привело к сбою. Когда я пытаюсь ввести 6, все, что я набираю на пульте, пусто.

Пожалуйста, помогите.

, 👍-3

Обсуждение

Что это за функция "displayTextOnRight()"? Какой код вы используете? где ты это нашел? Что он должен делать?, @Majenko


1 ответ


1

Если первый аргумент конструктора String имеет целочисленный тип , он пытается интерпретировать второй аргумент как числовое основание, а не как количество десятичных разрядов.

Итак, в String(100000, 0)); он как бы думает, что вы запрашиваете число, представленное в String с основанием 0, а не в десятичную (DEC), шестнадцатеричную (HEX), двоичную (BIN) и т. д., а основание 0 не имеет значения.

С первым аргументом типа с плавающей запятой, например 1000.0, второй аргумент принимает значение десятичных разрядов (см. decimalPlaces в документации).

Если вы хотите ".00" после целого числа, когда оно преобразуется в строку, вероятно, лучше просто напечатать его во втором вызове .print() или объединить его со строкой. И если вы хотите, вы можете вручную ввести преобразование целочисленных выражений в тип с плавающей запятой, чтобы принудительно выбрать другой конструктор, например, int a = 10000; что угодно.print(String(float(a), 2));

,