Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизОКРУГЛЕНИЕ ! ! ! . . . Найти похожие ветки
← →
IronHawk (2002-01-15 18:30) [0]Есть числа 1,2345 и 6,7890
но их произведение должно быть сведено (округлено) до двух знаков и ... причем ежели 3-я цифра после запятой до 5 (0,1150)
то это = 0,11, а ежели 3-я цифра после запятой после 5 или 5 и более (0,1151 или 0,1189) то это = 0,12
... Я помню в старых ФАQ ещё по Д3 и Д4 это было
но у меня их сейчас нету, а НАДО ...
.... погомиге пожалуйста ... кто может .
.... заранее благодарен !!!
← →
Фе (2002-01-15 20:16) [1]Для начала
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619976&n=19
А потом
function RoundToDec(var Value: Double; Decimals: Integer): Double;
var
j: Integer;
A: Double;
begin
A:=1;
Case Decimals of
0 : A:=1;
1 : A:=10;
else
for j:=1 to Decimals do
A := A * 10;
end;
Result:=Int((Value * A) + 0.5) / A;
end;
← →
Prophet (2002-01-15 21:35) [2]function roundx(value: real; decimals: integer):real;
var
i:integer;
m:integer;
begin
m:=1;
for i:=1 to decimals do
m:=m*10;
value:=value*m;
if frac(value)>0.5 then
result:=round(value)/m
else
result:=int(value)/m
end;
где value - это твое число,
decimals - это количество знаков после запятой, которое
необходимо оставить (в твоем случае 2).
← →
Фе (2002-01-15 22:43) [3]To Prophet
Не столь уж и важно, но Ваш ответ не вносит ничего нового.
Кроме того, в моем обрабатываются особые ситуации, что в итоге
быстрее.
Впрочем, есть еще более быстрый вариант, но громоздкий.
← →
Prophet (2002-01-15 23:43) [4]To Фе
Я написал свой вариант, т.к. после ввода твоего и компиляции программы, твоя функция после ввода значения 0,1150 выдала результат 0,12, хотя в вопросе IronHawk"а было сказано что при таком числе результат должен быть 0,11. А твоя программа аналогична функции: result:=round(value*100)/100, с одним отличием что она регулирует количество знаков после запятой.
← →
Tosov (2002-01-16 00:06) [5]причем ежели 3-я цифра после запятой до 5 (0,1150)
3 цифра = 5
5 >=5 => func(0,1150)=0,12 ?
← →
Prophet (2002-01-16 00:19) [6]Видители товарищи IronHawk некоректно построил вопрос, у него число 0,1150 можно отнести к обоим диапазонам как до 5, так и после 5. Так Фе написал вариант когда 3-я 5 относится к диапазону =>5, а я к диапазону <=5.
Так что давайте дадим возможность выбора IronHawk, пусть он уточнит вопрос, и соответственно будет использовать вариант Фе или мой.
← →
Фе (2002-01-16 01:50) [7]Ok
← →
IronHawk (2002-01-16 11:11) [8]ВСЕМ СПАСИБО !
... этот вопрос решился 1-й строкой ...
без функций и тому подобных вещей и ПРАВИЛЬНО !
>>> Prophet ©
когда 4-я цифра 0 (123,2350) то это = 123,23 !!!
.... ВСЕМ СПАСИБО И ВСЕГО НАИЛУЧШЕГО !
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c