Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизКак мне округлить значение до сотых??? Найти похожие ветки
← →
Relaxxx (2003-08-27 16:52) [0]Как мне округлить значение до сотых???
заранее спасибо
← →
Jeer (2003-08-27 18:30) [1]такое возможно только в визуальном представлении.
Str(..)
← →
Nikky (2003-08-27 18:38) [2]var value: double
value := round (value*100)/100
← →
paul_k (2003-08-27 19:37) [3]дельфа странно округляет.Подробнее об этом в хелпе написано. Поэтому round подходит
Приходится отдельную функцию писать
сравниваеш 0,5 с x*100-trunc(x*100)
если больше то result = trunc(x*100)/100
иначе result = (trunc(x*100)+1)/100
← →
Nikky (2003-08-27 19:43) [4]
> paul_k © (27.08.03 19:37) [3]
бред
← →
Тих (2003-08-27 19:48) [5]Сравнивать оператором "=" опасно. Потому при работе с БД советуют
1) Использовать тип Currency, money и т.п.
2) или decimal
3) или конвертировать в строку
Format(".%3f", [Value]) и сравнивать строки.
← →
paul_k (2003-08-27 19:54) [6]Nikky
Бред это то что Вы написали.
согласно правилам округления дельфы
44,5=44
45,5=46
для проверки выполните код
showmessage(inttostr( round(44.5)));
showmessage(inttostr( round(45.5)));
← →
Nikky (2003-08-27 20:26) [7]
> paul_k © (27.08.03 19:54) [6]
> 44,5=44
> 45,5=46
а как по-вашему он должен работать? 44,5=45? есть же международные стандарты, и round им соответсвует
← →
sniknik (2003-08-27 20:31) [8]просто рассадник предрассудков :о)))
округление до любого знака RoundTo (правда сама функция производная от Round)
установка математического округления и не только Set8087CW (правда значение которое нужно установить не помню :о)), но если никто его не подскажет, то завтра запостчу (на работе записано))
← →
sniknik (2003-08-27 20:32) [9]Nikky © (27.08.03 20:26) [7]
> есть же международные стандарты, и round им соответсвует
по умолчанию бугалтерское округление. проверь.
← →
Nikky (2003-08-27 20:39) [10]
> sniknik © (27.08.03 20:32) [9]
> sniknik © (27.08.03 20:31) [8]
F1, выдаваемый за ученость?
← →
sniknik (2003-08-27 20:54) [11]Nikky © (27.08.03 20:39) [10]
ну а почему бы и нет? кстати раз такой умный может положиш сюда значение Set8087CW(?) которое я не помню, переводящее на математическое округление.
пусть все пользуются.
(еще кстати, себя таким не считаю и F1 пользуюсь весьма активно)
← →
sniknik (2003-08-27 21:00) [12]хотя ладно здесь на форуме нашол (хорошо всетаки поиск стал работать)
http://delphimaster.net/view/15-1060756297/
обратить особое внимание на DiamondShark © (13.08.03 17:38) [30]
← →
paul_k (2003-08-28 16:04) [13]2 sniknik ©
Простите за совсем идиотский вопрос, а устанавливать Set8087CW() необходимо каждый раз, или достаточно при запуске программы?
← →
sniknik (2003-08-28 16:34) [14]наверное лутше каждый раз (точно не скажу, но может кто добавит чего), его же кроме тебя еще могут использовать (бугалтера разные и игрушки (графика) :-)).
я бы точно поставил прямо перед вычислениями (если б понадобилось), да и там всего пара асемблерных команд на скорость не повлияет.
← →
paul_k (2003-08-29 10:24) [15]Спасибо за совет...
значиччи просто функцию врисовать придется)
типа
function ArRoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
begin
Set8087CW($1B72);
result:=ROundTo(AValue,ADigit)
end;
function BuhgRoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
begin
Set8087CW($1372);
result:=ROundTo(AValue,ADigit)
end;
и юзать то что необходимо. я правильно понял?
← →
Anatoly Podgoretsky (2003-08-29 10:38) [16]Хорошо, но надо сохранять старый Default8087CW и потом восстанавливать, иначе могут быть трудно уловимые глюки.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c