Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2009, 22:10
Иринкаа Иринкаа вне форума
Прохожий
 
Регистрация: 11.11.2007
Сообщения: 20
Репутация: 10
По умолчанию Проблемы с округлением

у меня в программе происходит расчет ряда экономических показателей
сейча все считается правильно, но результат не округляется, т.е. много цифр после запятой

нужно округлить до 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  
Старый 29.03.2009, 12:18
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А зачем вам вообще использовать RoundTo? Используйте сразу:
Код:
 
Form2.Edit14.Text:=FloatToStrF(Sob_kap / Balans,ffGeneral,10,4);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 29.03.2009, 12:35
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Взято с 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  
Старый 29.03.2009, 14:29
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Используй функцию FloatToStrF

Пример:
Код:
ThousandSeparator:=''; //Это разделитель тысяч
Edit.Text:=FloatToStrF(Value,ffNumber,10,2);

10 - максимальное количество цифр в результате
2 - количество цифр после запятой
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #5  
Старый 29.03.2009, 17:48
Иринкаа Иринкаа вне форума
Прохожий
 
Регистрация: 11.11.2007
Сообщения: 20
Репутация: 10
По умолчанию

спасиб)

с FloatToStrF все работает правильно)
Ответить с цитированием
  #6  
Старый 03.04.2009, 17:04
Аватар для joker7438
joker7438 joker7438 вне форума
Прохожий
 
Регистрация: 03.04.2009
Адрес: Одесса
Сообщения: 18
Репутация: 10
По умолчанию

а можно и так!!!!-->
a:=round(a*100)/100;
Ответить с цитированием
  #7  
Старый 03.04.2009, 18:03
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Для экономических рассчетов есть специальный тип Currency
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #8  
Старый 03.04.2009, 18:44
Иринкаа Иринкаа вне форума
Прохожий
 
Регистрация: 11.11.2007
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Для экономических рассчетов есть специальный тип Currency

в данном случае мне нет смысла заморачиваться с денежными типами
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter