Число 42,3 считывается из XML и записывается в Variant как Double, и еще раз записывается в переменную типа Double.
В одном случае это при исполнении 42,299999999997, а в другом 42,300000000004 при просмотре через отладчик.
Ладно, допустим. Но стоит закрыть "проект" в исполняемой программе, открыть его заново любое кол-во раз.. и эти числа везде становятся одинаковыми.

Далее...та же программа.
В одном месте SimpleRoundTo делает так
- Код: Выделить всё
//SizeDout:=42,299999999997
SizeA :=SimpleRoundTo(SizeDout/2,-2);
//SizeA :=21,15000000001
В другом месте SimpleRoundTo делает так. И это никак не связано с делением
- Код: Выделить всё
//SizeDout:=27,00000000001
SizeA :=SimpleRoundTo(SizeDout,-2);
//SizeA :=27
И еще мне непонятно, почему где то вообще просто 21,37 без кучи нулей выводится.