Просмотр полной версии : 210-209 float -> int,.. ИПП 120 [ok event] e.t.c.
Привет всем.
Новичок в программировании в овен лоджик.
Не могу понять как так и норма ли это:
47908
(2,1*100 -> int = 209 =))
Куда писать? кого спрашивать? Подскажете ветку форума, или и тут вопрос для трёпа сойдёт?
И ещё,.. обсуждалось, наверное, для ИПП 120 - при программировании экранов,
ну очень хотелось бы иметь системную переменную "Экран" (типа int) не говоря уже об [Ok-event]
//sot
Ревака Юрий
18.03.2020, 14:33
Привет всем.
Новичок в программировании в овен лоджик.
Не могу понять как так и норма ли это:
47908
(2,1*100 -> int = 209 =))
Куда писать? кого спрашивать? Подскажете ветку форума, или и тут вопрос для трёпа сойдёт?
И ещё,.. обсуждалось, наверное, для ИПП 120 - при программировании экранов,
ну очень хотелось бы иметь системную переменную "Экран" (типа int) не говоря уже об [Ok-event]
//sot
Добрый день. Это особенности округления float, и преобразования блоков, если подать число 2,100001 будет все норм, блоки преобразования не округляют по правилам, они откидывают дробную часть, это нужно учитывать, и использовать округление. Раздел по OwenLogic https://owen.ru/forum/forumdisplay.php?f=34https://owen.ru/forum/forumdisplay.php?f=63 и ПР
Добрый день. Это особенности округления float, и преобразования блоков, если подать число 2,100001 будет все норм, блоки преобразования не округляют по правилам, они откидывают дробную часть, это нужно учитывать, и использовать округление. Раздел по OwenLogic https://owen.ru/forum/forumdisplay.php?f=34https://owen.ru/forum/forumdisplay.php?f=63 и ПР
т.е., не исключён сценарий, когда
1.0 -> bool == false ? (в том случае, если по какой-то причине процессор будет держать число 1.0 в памяти, как 0.9999)
manjey73
19.03.2020, 09:13
Сделайте округление до целого. есть макросы же для этого, потом делайте уже x-> bool
другой вариант это поставить гистерезис, если у вас не только 1-ницей ограничено значение, чтобы не плясало bool значение
т.е. Вы ответили, что, Да, такое - возможно.
Просо странно.
Если исходить из принципов хранения числа в виде мантисса и экспоненциальная часть, то в норме такое было бы не возможно.
И вообще я думал, что если преобразование в BOOL, то считается, что часть памяти в виде исходной переменной содержит хоть один значимый бит, даже (-0)
А будьте добры ещё раз тыкните меня В ветку форума или документации, где можно понять как происходят преобразования среди типов.
(я не имею в виду, что не хочу делать округления, я просто не понимаю логики работы аппаратной части и хочу разобраться)
manjey73
19.03.2020, 22:31
любое значение float ниже 1 в bool даст 0, что еще надо понимать ?
Просо странно.
Если исходить из принципов хранения числа в виде мантисса и экспоненциальная часть, то в норме такое было бы не возможно.
И вообще я думал, что если преобразование в BOOL, то считается, что часть памяти в виде исходной переменной содержит хоть один значимый бит, даже (-0)
А будьте добры ещё раз тыкните меня В ветку форума или документации, где можно понять как происходят преобразования среди типов.
слышали когда либо про такое https://en.wikipedia.org/wiki/Truncation
слышали когда либо про такое https://en.wikipedia.org/wiki/Truncation
Прткольно )) первый раз слышу, как и о том, что
Если делается функция преобразования, например
x>I
то она работает некоторым странным образом. Обратимся в начало обсуждения
2.1 * 100.0 = 210.0 >toInt = 209
Это реально не напрягает?
Отсюда вылезает и вопрос о том, что при вычислениях с плавающей запятой, иногда, вероятно в момент когда значение достигнет около 0 (нуля) , я получу преобразование float to boolean в виде Как вы сказали (мол, что тут не понятного) равное False
а, что, правда, есть такая логика, мол 0,999999 - это False ?
Где об этом прочитать?
и..ещё, я не подразумеваю, что делаю Trunc когда делаю => toInt - это не нормально.
Нормально это было бы документировать, чего я не нашел.
Дайте ссылку на документацию.
Спасибо.
у меня контрольные суммы не сходятся!
Понимаете.
Я блин. не понимаю - что я делаю не так... суммирую всё переводя в Int. И получаю разногласие в суммировании.
На контроллере одна сумма, на панелька - другая.
и разница не в тысячных долях, а в ЕДЕНИЦАХ.
Это какой-то бред.
любое значение float ниже 1 в bool даст 0, что еще надо понимать ?
эээ.... не понятно. это ошибка.
100.0 / 100.0 > to_bool = false - норма?
Прткольно )) первый раз слышу, как и о том, что
Если делается функция преобразования, например
x>I
то она работает некоторым странным образом. Обратимся в начало обсуждения
2.1 * 100.0 = 210.0 >toInt = 209
Это реально не напрягает?
Отсюда вылезает и вопрос о том, что при вычислениях с плавающей запятой, иногда, вероятно в момент когда значение достигнет около 0 (нуля) , я получу преобразование float to boolean в виде Как вы сказали (мол, что тут не понятного) равное False
а, что, правда, есть такая логика, мол 0,999999 - это False ?
Где об этом прочитать?
и..ещё, я не подразумеваю, что делаю Trunc когда делаю => toInt - это не нормально.
Нормально это было бы документировать, чего я не нашел.
Дайте ссылку на документацию.
Спасибо.
ну попробуйте , например 0.67 to_int сделать и параллельно (0.67 + 0.5) округлить, выберите какой результат Вас устроит
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot