Главная страница
    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-8822
Аркадий
2002-01-20 00:27
2002.02.04
Физические и логические диски


14-8991
lenak
2001-12-17 13:18
2002.02.04
как вставить символ в окно Edit?


3-8764
KonuhovSegey
2002-01-02 09:28
2002.02.04
Убрать ограничения на количество изменений в одной транзакции


1-8828
Dailagig
2002-01-20 12:11
2002.02.04
Help ME


1-8878
Alexm
2002-01-16 12:52
2002.02.04
Свертывание окна





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