Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизОкругление чисел Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c