Подскажите, почему при сравнении числа 0.3 с условием в компоненте If_else <=0.3 компонент выдает команду в onFalse
Пример:
code_36346.txt
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
|
|||
карма: 0 |
| ||
файлы: 1 | code_36346.txt [850B] [765] |
Ответов: 1926
Рейтинг: 172
|
|||
Подтверждаю, есть ошибка. Также есть ошибка и при 0.29, и при 0.49. Скорее всего, это связано с особенностями округления.
|
|||
карма: 9 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2021-06-24 09:02:29 |
|||
карма: 0 |
|
Ответов: 413
Рейтинг: 57
|
|||
3042 писал(а): Скорее всего, это связано с особенностями округленияЭту ошибку можно исправить или нет? Если кто из гуру знает, где в коде компонента и что нужно подправить - подскажите. |
|||
карма: 0 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Poputchik, Во многой мудрости много печали . Надо не задумываясь было делать сравнение с текстом, как новички и всё бы получилось .
г. Add(MainForm,2953706,2, интересный у тебя вход в положение, а если необходимо найти равенство 0.3=0.3 ? ps: интуитивно чувствую виноват Edit |
|||
карма: 3 |
|
Ответов: 1926
Рейтинг: 172
|
|||
MAV писал(а): Надо не задумываясь было делать сравнение с текстом, как новички и всё бы получилось .Тогда 0.30 выделяет красным. |
|||
карма: 9 |
|
Разработчик
Ответов: 26164
Рейтинг: 2127
|
|||
Poputchik писал(а): Эту ошибку можно исправить или нет?А проблема-то в чем? Ну поставьте Math с округлением до нужного разряда, и дело с концом. Че тут еще тереть-то?
|
|||
карма: 22 |
|
Ответов: 8930
Рейтинг: 823
|
|||
Poputchik, это не ошибка, а представление чисел в двоичной системе, в которой считает компьютер. Полагаю, что при компиляции Паскаль пользует 64-битный формат с плавающей запятой и округляет числа с 52 значащими битами, а при работе *.ехе компьютер использует свой матпроцессор с не менее чем 80-битным числом, отсюда и такие ошибки в двоичных дробях.
Точнее подскажет Galkov, если увидит. "Вот приедет барин, барин нас рассудит!" |
|||
карма: 19 |
|
Ответов: 1304
Рейтинг: 405
|
|||
3042, это да, надо написать памятку пользователю что мол нефиг вводить незначащие ноли
|
|||
карма: 3 |
|
Ответов: 1926
Рейтинг: 172
|
|||
MAV, или отсекать их программно, если введёт.
|
|||
карма: 9 |
|
Разработчик
Ответов: 26164
Рейтинг: 2127
|
|||
Ну вас и понесло
|
|||
карма: 22 |
|
Ответов: 1304
Рейтинг: 405
|
|||
nesco писал(а): Ну вас и понесло а мы лёгких путей не ищем , меня просто смущает то что используя два Memory в качестве 1 и 2-го операнда получается ожидаемый результат без округления. |
|||
карма: 3 |
|
Ответов: 8930
Рейтинг: 823
|
|||
MAV, схемку покажите
|
|||
карма: 19 |
|
Ответов: 1304
Рейтинг: 405
|
|||
карма: 3 |
| ||
файлы: 1 | code_36353.txt [1.3KB] [554] |
14