Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизКак округлить число? Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.038 c