Преобразование из Float в Int дает странные результаты. Что я делаю не так?
Итак, я пытаюсь получить данные GPS с помощью GPS-модуля Neo 6M (это то, что закрыто квадратом из соображений конфиденциальности) и обработать их, сложив/умножив, чтобы получить большие целые числа, представляющие данные GPS. Это использование Arduino nano. Когда я пытаюсь преобразовать числа с плавающей запятой в целые числа, я получаю совершенно другие числа. 1242895 превращается в -2289, а 611194 превращается в 21370. Я столько всего перепробовал, но не понимаю, что происходит. Это связано с указыванием? Прошло некоторое время с тех пор, как я узнал об указателях в своем классе C++. X и Y инициализируются как глобальные переменные типа int.
1 ответ
На плате Arduino с процессором 328 INT хранится как 2-байтовое значение, поэтому максимальное число равно 32 767.
Вы хотите использовать LONG, представляющий собой 4-байтовое число с максимальным значением 2 147 483 647.
Когда используемая вами переменная недостаточно велика, число переворачивается, поэтому в итоге вы получаете отрицательное число.
Я исправил заглавные буквы в вашем посте, но в будущем, пожалуйста, старайтесь составлять предложения на английском языке. Они начинаются с заглавной буквы. Это не игровой чат, где вы просто вводите все строчными буквами., @Nick Gammon
@NickGammon Вау. Большое спасибо., @Chad G
- Преобразование Float в int не работает прямо в методе с использованием varargs
- Специальное форматирование чисел с плавающей запятой и преобразование их в массив символов.
- просчет с плавающей запятой, когда переменная int32_t делится на 10
- Как использовать данные float с датчика с помощью библиотеки Arduino mouse library
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
Пожалуйста, скопируйте и вставьте сюда свой код вместо публикации скриншота. Изображение какого-то текста — это самая бесполезная вещь в Интернете. Его нельзя копировать и редактировать. Это трудно читать. Программы чтения с экрана не могут коснуться его. Пожалуйста, в будущем просто скопируйте и вставьте сам текст., @Delta_G
Прикрыли из соображений конфиденциальности? Вы делитесь теми же данными ниже, только с тривиальным преобразованием., @Edgar Bonet