Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.45 MB
Время: 0.006 c
1-8834
Ajax
2002-01-15 09:31
2002.02.04
Изменение свойств KOL формы


1-8816
ev
2002-01-19 17:11
2002.02.04
Sender


1-8861
NLO
2002-01-18 12:36
2002.02.04
Как получить иконку зарегистрированного расширения


3-8770
maxi
2002-01-03 11:19
2002.02.04
Как в Делфи работать с разделителями полей к базе ASCII ?


4-9033
Mr.Death
2001-11-22 08:59
2002.02.04
Как перехватить вперед системы сочетание Сtrl+Alt+Del из под WIN2000/XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский