Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 !!!


.... ВСЕМ СПАСИБО И ВСЕГО НАИЛУЧШЕГО !




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.019 c
1-8871            Stror                 2002-01-13 12:16  2002.02.04  
WebBrowser


1-8819            vbazik                2002-01-15 18:01  2002.02.04  
Копирование фрагмента изображения


3-8778            Сержик                2002-01-04 22:47  2002.02.04  
Можно запрос делать сразу из двух баз?


1-8944            Сержик                2002-01-18 09:48  2002.02.04  
Как подменить exe-шник из него самого?


4-9021            Art                   2001-12-06 13:52  2002.02.04  
Помогите!Есть проблема программным выключением компа!!!?