Главная страница
    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.49 MB
Время: 0.038 c
14-1085855207
Анонимный алкоголик
2004-05-29 22:26
2004.06.13
Нужен выход


3-1084813754
loser
2004-05-17 21:09
2004.06.13
Что такое index is out of date


3-1085041421
iddqd
2004-05-20 12:23
2004.06.13
Тормоза с Sybase


14-1085402763
sucer
2004-05-24 16:46
2004.06.13
Посмотрите что делает эта гадина INTEL


1-1086152549
sils
2004-06-02 09:02
2004.06.13
Траблы с QuickReport





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