|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемы с округлением
у меня в программе происходит расчет ряда экономических показателей
сейча все считается правильно, но результат не округляется, т.е. много цифр после запятой нужно округлить до 2-3 цифр после запятой Пытаюсь применить ф-цию RoundTo(x, adigit) не получается...возвращает 0 пишу так K_konc_sob_kap:= RoundTo((Sob_kap / Balans),4); Form2.Edit14.Text:= FloatToStr(K_konc_sob_kap); без roundto все работало... K_konc_sob_kap:= (Sob_kap / Balans); Form2.Edit14.Text:= FloatToStr(K_konc_sob_kap); может несостыковка типов переменных... есть др способ округления? |
#2
|
||||
|
||||
А зачем вам вообще использовать RoundTo? Используйте сразу:
Код:
Form2.Edit14.Text:=FloatToStrF(Sob_kap / Balans,ffGeneral,10,4); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
Взято с decoding.narod.ru:
Код:
Как правильно округлять дробные числа? // Precision = 1 - округлить до целых // Precision = 10 - округлить до десятых // Precision = 100 - округлить до сотых, и т.д. function RoundEx( X: Double; Precision: Integer ): Double; var ScaledFractPart, Temp: Double; begin ScaledFractPart := Frac( X ) * Precision; Temp := Frac( ScaledFractPart ); ScaledFractPart := Int( ScaledFractPart ); if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1; if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1; RoundEx := Int( X ) + ScaledFractPart / Precision; end; Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра. |
#4
|
||||
|
||||
Используй функцию FloatToStrF
Пример: Код:
ThousandSeparator:=''; //Это разделитель тысяч Edit.Text:=FloatToStrF(Value,ffNumber,10,2); 10 - максимальное количество цифр в результате 2 - количество цифр после запятой Хорошо написанная программа не требует документации ICQ 9-184-668. |
#5
|
|||
|
|||
спасиб)
с FloatToStrF все работает правильно) |
#6
|
||||
|
||||
а можно и так!!!!-->
a:=round(a*100)/100; |
#7
|
||||
|
||||
Для экономических рассчетов есть специальный тип Currency
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#8
|
|||
|
|||
Цитата:
в данном случае мне нет смысла заморачиваться с денежными типами |