|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Действия над Float
Подскажите, пытаюсь произвести сложение и вычитание с переменными типа Real, но получаю странный результат:
Код:
memo2.lines.Add(floattostr(z6)+'+'+floattostr(income)+'-'+floattostr(z18)+'='+floattostr(z6+income-z18)); Цитата:
должен получиться ноль, но получается 5,55111512312578E-17 Последний раз редактировалось Glob, 19.04.2021 в 16:08. |
#2
|
|||
|
|||
Ну, результат похож на ожидаемый.
То, что ты получаешь, это 5.5 умноженное на 10 в -17 степени. Так называемое экспоненциальное представление. Во первых, лучше пользоваться типом Double. Во вторых, судя по названию переменной income, ту работаешь с денежными данными. Для таких данных сущетсвует специальный тип - Currency. В третьих, если уж так надо использовать вещественные данные, то можно просто результат округлять до нужной точности, например, с помощью функции RoundTo или использовать форматирование - Format("%.3f",[z6+income=z18]). |