Предлагаю к обсуждению такой код:
## Код:
```
MODULE TempTest;

IMPORT Log := StdLog;

PROCEDURE Do*;
VAR a: SHORTREAL; b, c: REAL;
BEGIN
   Log.Ln;
   a := 0.1;
   b := 0.1;
   c := a;
   IF a = b THEN Log.String("a = b") ELSE Log.String("a # b") END;
   Log.Ln;
   IF a = c THEN Log.String("a = c") ELSE Log.String("a # c") END;
   Log.Ln;
END Do;

END TempTest.
```

Этот код даёт такой результат:## Код:
```
a # b
a = c
```


Возникает два вопроса:
1. Почему первый результат отрицательный?
2. Почему первый и второй результаты различны?

Собственно, прямые ответы на эти вопросы нам известны и потому не интересны.
Но должно ли так быть? Разве ЯВУ не должен нас изолировать от внутренних форматов хранения вещественных чисел (IEEE Standart 754, если не ошибаюсь)?

Замечу, что проблема касается всех ЯВУ. КП здесь использован только для примера.

Замечу также, что проблема не "высосана из пальца". Мне в таких случаях приходилось использовать доверительные интервалы, и вместо точного сравнения проверять попадание в этот интервал. Но постоянное использование этого приёма утомляет. Хотелось бы решить проблему на уровне языка.