Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.027 c
6-1082748153
Atomik
2004-04-23 23:22
2004.06.13
Исключения


14-1085381996
guest_Dmitry
2004-05-24 10:59
2004.06.13
Возможно ли в html файле запретить копирование?


1-1085820340
Dextor-andrei
2004-05-29 12:45
2004.06.13
Console Application


14-1085372303
defen
2004-05-24 08:18
2004.06.13
GeForce4 MX 440


3-1085208566
Andriy Tysh
2004-05-22 10:49
2004.06.13
Ошибка в ClientDataSet