Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Подскажите сабж нужно, что-то типа 33/29=1.13 округляем до большего = 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 14:15 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
x=round(y+0.5); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 14:17 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Или Round(Int(X))+1, поскольку иногда 5.999999999...+0.5 может дать больше 6.5 и чуть более (в зависимости от конкретных примененных вещественных типов), что уже даст 7 а не 6!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 14:36 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
наверное x=round(y+0.4); потому что при y=1 x будет равен 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 14:37 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Round(1.05+0.4) = 1, так что Round(Int(X)) + 1 [ДАЖЕ не Round(Int(X + 1))!!!] - единственный правильный вариант!!! Вернее, действительно, простого решения не будет, поскольку эта формула будет страдать на значениях, близких к целым, равно как и в первом ответе, в третьем предложении здорово указан недостаток 1-го и 2-го ответов, однако в целом вариант однозначно не совсем подходит, извини. Хороший выход остается только если известно кол-во десятичных знаков после запятой обрабатываемых чисел (N) или удовлетворительное значение этого числа, в этом случае X2 := Round(X*10^N) и вперед к однозначности, Y := X2 div 10^N + 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 15:19 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
x:=trunc(y)+1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 15:35 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
А если ceil(1.13)=2 из Math это нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 16:27 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
2zDIV а можно узнать, чем отличается Round(Int(X)) от Int(X) ? и что выдаст конструкция Round(Int(5))+1 в моем варианте, погрешность идет от реализации математического аппарата, алгоритмически все верно. в твоем варианте, алгоритмический бред, извини. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:01 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:34 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Если нужно именно при делении, то можно что-нибудь такое, исключительно на целочисленной арифметике: (a div b) + sign(a mod b) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 07:04 |
|
||
|
Как найти ближайшее большее число?
|
|||
|---|---|---|---|
|
#18+
Оккей, 1) trunc(X)=round(int(X)), сглупил, но это ничего не меняет. 2) trunc(X) и int(X) отличаются типом результата, (здесь это очень важно, абсолютно(!!!), поскольку не всегда, например, 123456789 <> 123456789.0 (можно найти такие пары)) а по вопросу видно, что человеку скорее всего нужно целое число... 3) насчет бреда (обидно, даже если это правда), уважаемый alex_k, я же поправился, если известно кол-во десятичных знаков... Y := Round(X*10^N) div 10^N + 1, хотя действительно, еще бред, тот же самый эффект на "стыке", так что без условия не обойтись. 4) oleg_e! - это вариант! type TOneReal=double; function MyRound(a: tonereal): integer; var b: tonereal; //поскольку не всегда, например, 123456789 <> 123456789.0 // a и b должны быть одного типа!!! begin b:= int(a); //нельзя использовать trunc if a <> b then b := b + 1; Result := Round(b) end; 5) для целочисленного деления - предыдущий ответ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 08:05 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32239022&tid=2117275]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
94ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 390ms |

| 0 / 0 |
