FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Четверг, 08.12.2016, 03:05
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Float (Ошибки при делении)
Float
Lagresse
Дата: Понедельник, 23.05.2016, 11:03 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
Что делать? У меня при делении входящих данных типа "unsigned long integer" на константу типа данных "float" вместо 6 знаков после запятой результат выдаётся только с 2 знаками после запятой. (Округляется)
 
Boroda Дата: Понедельник, 23.05.2016, 12:12 | Сообщение # 2
Майор
Группа: Проверенные
Сообщений: 150
Награды: 8
Репутация: 8
Статус: Offline
Ардуино не очень корректно работает с типом Float (6.00/2.00 не равно 3.00). Мое предположение: Автор специально ограничил тип Флоат двумя знаками после запятой и это логично, потому как там находится "мусор". Умножте входной ULong на 1млн и делите на целое число. Шесть младших цифр - знаки после запятой. Старайтесь работать с целочисленными типами.
 
Lagresse Дата: Понедельник, 23.05.2016, 17:26 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
А в моем случае на сколько умножать ?
Вот пример расчётов
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 Дата: Понедельник, 23.05.2016, 20:02 | Сообщение # 4
Майор
Группа: Проверенные
Сообщений: 150
Награды: 8
Репутация: 8
Статус: Offline
Вот сделал блоки 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(26Kb)


Сообщение отредактировал Boroda - Понедельник, 23.05.2016, 22:23
 
Lagresse Дата: Вторник, 24.05.2016, 01:30 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
Спасибо вам большое!
 
Форум » Основной » Спросить у знатоков » Float (Ошибки при делении)
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика