![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#4
|
||||
|
||||
|
Используй функцию FloatToStrF
Пример: Код:
ThousandSeparator:=''; //Это разделитель тысяч Edit.Text:=FloatToStrF(Value,ffNumber,10,2); 10 - максимальное количество цифр в результате 2 - количество цифр после запятой |
|
#5
|
|||
|
|||
|
спасиб)
с FloatToStrF все работает правильно) |
|
#6
|
||||
|
||||
|
а можно и так!!!!-->
a:=round(a*100)/100; |