Float

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Lagresse
Рядовой
Сообщения: 28
Зарегистрирован: 29.03.2016{, 02:14}
Репутация: 0

Float

#1

Сообщение Lagresse » 23.05.2016{, 11:03}

Что делать? У меня при делении входящих данных типа "unsigned long integer" на константу типа данных "float" вместо 6 знаков после запятой результат выдаётся только с 2 знаками после запятой. (Округляется)

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 33
Откуда: Коломна
Имя: Станислав
Контактная информация:

Float

#2

Сообщение Boroda » 23.05.2016{, 12:12}

Ардуино не очень корректно работает с типом Float (6.00/2.00 не равно 3.00). Мое предположение: Автор специально ограничил тип Флоат двумя знаками после запятой и это логично, потому как там находится "мусор". Умножте входной ULong на 1млн и делите на целое число. Шесть младших цифр - знаки после запятой. Старайтесь работать с целочисленными типами.

Lagresse
Рядовой
Сообщения: 28
Зарегистрирован: 29.03.2016{, 02:14}
Репутация: 0

Float

#3

Сообщение Lagresse » 23.05.2016{, 17:26}

А в моем случае на сколько умножать ?
Вот пример расчётов
12ч58м59с=46739с
46739сек/60=778,9833333333333
778,9833333333333-778=0,9833333333333333
0,9833333333333333*60=59сек
778/60=12,96666666666667(целое число это кол-во часов)
12,96666666666667-12=0,9666666666666667
0,9666666666666667*60=58минут

Добавлено (23.05.2016, 17:26)
---------------------------------------------
Вообще в программе указано что float соответсвует числам
от -3,402823e38 до 3,402823e38, присутствует индекс "e", т.е. возведение в степень.
Немогу понять как тогда реализовать таймер, чтобы он показывал сколько осталось часов, минут секунд

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 33
Откуда: Коломна
Имя: Станислав
Контактная информация:

Float

#4

Сообщение Boroda » 23.05.2016{, 20:02}

Вот сделал блоки SecToTime и TimeToSec и пример работы с ними.

Смысл такой:
1. Входную величину Sec делим на 86400, получаем целое число дней D.
2. Далее Sec - D*86400, получим число секунд без дней Т1.
3. Т1 / 3600, получим целое число часов H.
4. Т1 - H*3600, получим число секунд без дней и часов Т2.
5. Т2 / 60, получим целое число минут М.
6. Т2 - М*60, получим число секунд без дней, часов и минут Т3.
7. T3 - это и есть секунды S.
Вложения
Test_time.rar
(25.85 КБ) 30 скачиваний
Последний раз редактировалось Boroda 23.05.2016{, 22:23}, всего редактировалось 1 раз.

Lagresse
Рядовой
Сообщения: 28
Зарегистрирован: 29.03.2016{, 02:14}
Репутация: 0

Float

#5

Сообщение Lagresse » 24.05.2016{, 01:30}

Спасибо вам большое!

Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей