Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Как округлить число?   Найти похожие ветки 

 
Unicode   (2004-05-31 14:19) [0]

Как правильно округлить число в дельфи если меньше 5 тогда к наименьшему если больше шести тогда наибольшему десятитчному числу..
допустим 25 к 20 а 26 к 30


 
Fay ©   (2004-05-31 14:21) [1]

Сделай как сам написал.


 
Fay ©   (2004-05-31 14:22) [2]

if, div, mod, *, < и :=


 
Unicode   (2004-05-31 14:24) [3]

что значит сделай как сам написал.. я ничего не делал... точнее просто прикинул но не очень то хорошо это выглядет навернека есть проца в дельфи просто найти не могу.. кто знает?


 
GuAV ©   (2004-05-31 14:26) [4]

если Integer, то через div/mod, а если float, то имхо делить на десить, затем округлить, в интегер и муножить на десять.


 
Gero ©   (2004-05-31 14:29) [5]

Что-то вроде

function MyRound(N : Integer) : Integer;
begin
 if N mod 10 <= 5 then
   Result := N - N mod 10;
 else
   Result := N + (10 - N mod 10);
end;


 
Семен Сорокин ©   (2004-05-31 14:35) [6]

Result := Round(Value/10)*10


 
Anatoly Podgoretsky ©   (2004-05-31 14:49) [7]

Семен Сорокин ©   (31.05.04 14:35) [6]
Ты не обратил внимание на вопрос
20..24 -> 20
25     -> 25
25..29 -> 30


Case N MOD 10 of
  0..4: N := N div 10 * 10
  6..9: N div 10 * 10 + 10

end;


 
Gero ©   (2004-05-31 14:50) [8]


> Семен Сорокин ©   (31.05.04 14:35)

Внимательно читайте сабж.


 
Anatoly Podgoretsky ©   (2004-05-31 14:50) [9]

Опечтка

Case N MOD 10 of
 0..4: N := N div 10 * 10
 6..9: N := N div 10 * 10 + 10
end;


 
Gero ©   (2004-05-31 14:51) [10]


> 20..24 -> 20
> 25     -> 25
> 25..29 -> 30

Нет,
> 20..25 -> 20
> 26..29 -> 30


 
Iraizor ©   (2004-05-31 15:09) [11]

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils;
var a:integer;
function RoundbabyRound(c:integer):integer;
var s:string;

begin
s:=inttostr(c);
s:=copy(s,length(s),1);
if strtoint(s) <5 then begin result:=c-strtoint(s);end else begin result:=c+(10-strtoint(s));end;
end;
begin
readln(a);
writeln(roundbabyround(a));
readln;
end.

Эта же функция будет работать и с Float , только типы переменных поменяй и все +)


 
Семен Сорокин ©   (2004-05-31 15:10) [12]

Сорри, действительно невнимателен


 
Skyle ©   (2004-05-31 15:11) [13]

Ну тогда в

> Anatoly Podgoretsky ©   (31.05.04 14:50) [9]

строку

> 0..4: N := N div 10 * 10

написать как
0..5: N := N div 10 * 10


 
Anatoly Podgoretsky ©   (2004-05-31 15:11) [14]

Gero ©   (31.05.04 14:51) [10]
если меньше 5 тогда к наименьшему
25 mod 10 = 5 это не меньше

Я правда все равно ошиься если больше шести тогда наибольшему десятитчному числу..

0..4
7..9

Правильно так


 
DrPass ©   (2004-05-31 15:12) [15]

А чем функция RoundTo не нравится?


 
Gero ©   (2004-05-31 15:13) [16]


> Anatoly Podgoretsky ©   (31.05.04 15:11)


Unicode   (31.05.04 14:19)
> допустим 25 к 20


 
Семен Сорокин ©   (2004-05-31 15:15) [17]

Iraizor ©   (31.05.04 15:09) [11]
введи число "-13"


 
Anatoly Podgoretsky ©   (2004-05-31 15:18) [18]

Gero ©   (31.05.04 15:13) [16]
Это противоречит вопросу, я отдал приоритет вопросу.
Я конечно могу предположить что у него мысли пктаются, но тогда пусть он сделает поправку к вопросу с больщим количество например и с информацией о типах данных, поскольку тут тоже свое толкование.


 
Семен Сорокин ©   (2004-05-31 15:19) [19]

для целочисленного числа можно так :)
Result := Round((Value-0.1)/10)*10


 
GuAV ©   (2004-05-31 15:22) [20]


> Result := Round((Value-0.1)/10)*10

Вариант рабочий, только погрешность большя, надо 0.00000000001 :)


 
Unicode   (2004-05-31 15:22) [21]

Все ребята всем спасибо.. Тема закрыта..
последний вариант

Опечтка

Case N MOD 10 of
0..4: N := N div 10 * 10
6..9: N := N div 10 * 10 + 10
end;


Anatoly Podgoretsky


 
Iraizor ©   (2004-05-31 15:45) [22]

Семен Сорокин ©  
да , не предусмотрел +(


 
SergP ©   (2004-05-31 18:39) [23]

N := N + 4 -(N+4) mod 10;



Страницы: 1 вся ветка

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

Наверх





Память: 0.49 MB
Время: 0.031 c
14-1085838902
Guddini
2004-05-29 17:55
2004.06.13
Подскажите, как найти все файлы в папке с заданной маской?


14-1085468028
*Pavel
2004-05-25 10:53
2004.06.13
Международные платежные системы


3-1084953893
Tomkat
2004-05-19 12:04
2004.06.13
FireBird 1.5 &amp; IBExpert


1-1085527997
kaif
2004-05-26 03:33
2004.06.13
Decimal Separator


3-1085475768
sesh
2004-05-25 13:02
2004.06.13
Как сохранить результат запроса AdoQuery в текстовій файл





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