Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Округление чисел   Найти похожие ветки 

 
GAlexis ©   (2004-01-16 14:13) [0]

Уважаемые мастера! Помогите пожалуйста решить проблему. Нужно округлять числа с двумя занаками после запятой так: сначала надо округлить до одного занака после запятой, после этого нужно посмотреть какая это цифра, если пятерка - то округлить до целого вниз, если нет - то обычное округление. Потом берется следующее число, и при пятерке округление должно идти вверх и т.д.


 
Семен Сорокин ©   (2004-01-16 14:31) [1]

Помогите пожалуйста решить проблему.
А в чем проблема-то?
Алгоритм ясен.


 
AKul ©   (2004-01-16 14:36) [2]

Результат:=Round(Число*100)/100;
А если нужно только для отображения то FormatStr...


 
GAlexis ©   (2004-01-16 14:48) [3]

>Семен Сорокин Для меня алгоритм не ясен. Можно в лоб сделать, т.е. округлить до одного знака, потом конвертнуть FloatToStr, проверить наличие 5 после запятой, если есть, то SetRoundMode(rmDown), потом уже Round. И так применительно к 48 полям БД и 1500 записям. А ведь надо еще и чередовать округление вверх-вниз!


 
Ega23 ©   (2004-01-16 14:57) [4]

А зачем FloatToStr?
Смотри:
Берём очередное X.

X:=Round(X*10)/10;
if X-Trunc(X)=0.5 then
SetRoundMode(rmDown)
else SetRoundMode(rmUp);
X:=Round(X);


 
alex_*** ©   (2004-01-16 15:02) [5]

еще вариант: StrToFloat(FormatFloat("0.00",value))
правда я думаю не самый быстрый....


 
galexis ©   (2004-01-16 15:14) [6]

>Ega23 Видимо, подходит, спасибо. Но есть еще вопросик с чередованием вверх-вниз, т.е. Первый раз 0.5 встретилось, округляем вниз, второй раз - вверх и т.д. Надо что ли флаг поставить? Ну это ладно, мелочь. Еще я с Round запутался. SetRoundMode(rmUp) что будет означать?, то что 3,4 округлится до 4? или всетаки до 3?


 
Ega23 ©   (2004-01-16 15:19) [7]

А я не знаю что такое SetRoundMode(rmUp) :0)
Просто увидел SetRoundMode(rmDown) и по аналогии .....
Если без SetRoundMode, то:

X:=Round(X*10)/10;
if X-Trunc(X)=0.5 then
X:=Trunc(X)
else X:=Trunc(X)+1;


 
Романов Р.В. ©   (2004-01-16 15:20) [8]

SetRoundMode оставь в покое
Round округляет числа с четной целой частью вниз с нечетной вверх (при SetRoundMode rmNearest).


 
galexis ©   (2004-01-16 15:25) [9]

>Ega23 Так еще лучше! Спасибо

всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-93329
Michail Dalakov
2004-01-01 23:38
2004.01.29
DCOM


3-93348
raptorus
2004-01-04 10:10
2004.01.29
Здравствуйте, Мастера. Подскажите как перерисовывавать ячейки


1-93565
MakNik
2004-01-15 12:23
2004.01.29
TEdit


1-93551
Rradion
2004-01-15 18:51
2004.01.29
Алгоритм перевода из УНАРНОЙ в ДВОИЧНУЮ систему?


1-93456
Lkan
2004-01-16 08:03
2004.01.29
Хеш