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

Вниз

ОКРУГЛЕНИЕ ! ! ! . . .   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
7-9012
stasev
2001-10-17 22:24
2002.02.04
Delphi + Nokia


1-8904
Filat
2002-01-14 20:50
2002.02.04
Как создать в Word и вывести на печать страницу


1-8924
SGS
2002-01-17 18:20
2002.02.04
Как получить версию ActiveX?


1-8870
NY152
2002-01-15 09:59
2002.02.04
Подскажите, где поставить проверку...


1-8945
kserg@ukr.net
2002-01-18 13:12
2002.02.04
Как программно перевести фокус в ячейку StringGrid.Cells