Главная страница
    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.46 MB
Время: 0.004 c
3-8751
Olfi
2002-01-03 15:29
2002.02.04
Вопрос по TQuery...


1-8953
corvalol
2002-01-18 11:08
2002.02.04
Нужна приличная и


1-8908
kostushock
2002-01-17 12:15
2002.02.04
Модальные формы


1-8842
Nicolas_
2002-01-14 17:41
2002.02.04
Dock n drop Как убрать кнопку с заголовка прилепленного окна?


1-8810
Анатолий
2002-01-18 03:49
2002.02.04
SaveDialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский