Откуда берется мусор в переменной с плавающей запятой в Delphi?
Есть текстовое поле, куда вбиваю что-то типа 340,788
Потом беру StrToFloat от текста в поле в переменную single, потом снова FloatToStr - и получаю - 340,787994384766.
Если округлить, а потом, скажем, 100 прибавить - все равно мусор добавляется в младших разрядах.
Из-за того, что число 340,788 невозможно точно отобразить в плавающей запятой. Никакой: ни single, ни double, ни extended. А FloatToStr на стандартных настройках предполагает точность не то double, ни то extended.
Решил задачу немного странно - убрал целую часть, домножил дробную до нужной мне точности (*1000) после знака, округлил до целого, убрав дробную часть.. Нужно было просто получить число, равное тысячным долям величины.