Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Округление чисел, Как округ число в большую сторону 
:(
    Опции темы
Dmi-Afonin
Дата 7.11.2004, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 31.10.2004

Репутация: нет
Всего: нет



Люди подскажите как округлить число в большую сторону, т. е. 0.1 окр до 1, 0.5 окр до 1, 0.9 окр до1, 1.2 до 2 и так далее. Функции Round и Trunc работают не так.
PM MAIL   Вверх
Zero
Дата 7.11.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



А как на счёт подхимичить: smile
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 a:real;
begin
 a:=7.9;
 a:=INT(a)+1;
 label1.Caption:=floattostr(a);
end;

PM MAIL ICQ   Вверх
<Spawn>
Дата 7.11.2004, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Код

uses ..., Math;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(IntToStr(Ceil(2.3)));
end;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 7.11.2004, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата(Zero @ 7.11.2004, 13:34)

  a:=7.9;
  a:=INT(a)+1;
Так не правильно. Ровно 7 округлится до 8.
Как вариант кроме ceil, можно так:
b := Round(a + 0.5)





--------------------
С уважением, г-н Посол.
PM   Вверх
Elfin
Дата 7.11.2004, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.10.2004

Репутация: нет
Всего: нет



if FRAC(a)>0 then a:=INT(a)+1; smile
PM MAIL   Вверх
Dmi-Afonin
Дата 9.11.2004, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 31.10.2004

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
SoWa
Дата 17.12.2004, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



А в DRKB есть статья...


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Vladimir13
Дата 18.12.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



а если
i:=<взять целую часть>(abs(a)-1) ; {если вдруг а<0}
while label1.text='' do
if a>i then i:=i+1 else label1.text:=StrToInt(i);

т.е. а- это исходное число.
Стыдно, не помню как целая чать обозначается. smile
Добавлено @ 17:54
вспомнил int(abs(a)-1)
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Zero
Дата 19.12.2004, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



smile smile smile smile smile smile
А если а=7 ─ целому числу, то максимальное равно 6 smile smile smile
Целая куча правильных ответов уже прозвучала, да и тема автором давно забыта, SoWa и Vladimir13 ─ посмотрите на дату создания. smile smile smile
PM MAIL ICQ   Вверх
NiJazz
Дата 19.12.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Крутые вы ребята! smile
Код

MyRound := Trunc(OldValue) + 1;

Должно ведь работать?
PM MAIL   Вверх
Vladimir13
Дата 20.12.2004, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



Цитата(Zero @ 19.12.2004, 00:03)
А если а=7 ─ целому числу, то максимальное равно 6 
а смысл округлять целое число?
Ну и что что автор забыл про нее, но другим же тоже интересно?!.
И все равно по моему коду если а=7 то при округлении в большую сторону мы и получим i=7.

Добавлено @ 01:06
пардон!!! в формуле надо поставить if a>=i then i:=i+1 else label1.text:=StrToInt(i);
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Zero
Дата 20.12.2004, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Vladimir13 @ 20.12.2004, 01:06)
пардон!!!

Вот именно.
Зачем использовать всякие премудрости когда можно на много проще, например как предолжил p0s0l. smile
PM MAIL ICQ   Вверх
Vladimir13
Дата 20.12.2004, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



сколько людей - столько и мнений! Кому то нравиться так, кому то эдак.
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Zero
Дата 20.12.2004, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Vladimir13 @ 20.12.2004, 01:06)
а смысл округлять целое число?

Всякое бывает. И кстати, Dmi-Afonin мой др. и я заню для чего ему надо было увиличивать, и вариант с целым числом в его курсаче тоже присутствовал.
Это я ему сказал чтобы он обратился в этот форум, и один вариант подкинул, чтобы др. участники тоже начили что-нибудь писать для замены моего изначально не лучшего варианта. smile
Я хотел узнать лучший способ, и по моему это то что предложил Посол. Кстати курсач он уже здал.

Это сообщение отредактировал(а) Zero - 20.12.2004, 01:31
PM MAIL ICQ   Вверх
Vladimir13
Дата 20.12.2004, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



Эх, Zero,Zero. И ты говоришь, что не дуешься на меня за тот smile ?

Скажи, мое решение не верно?
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.