Задание такое: написать функцию округлания хитрой величины в большую сторону без использования библиотечных функций. Получение хитрой величины - дело нехитрое, а вот на округлении я застрял. Появилась мысль написать нужный кусок на ассемблере.
Теперь вопрос: можно ли написать округление в большую сторону средствами С++? Если нет, как пользоваться ассемблерными вставками в С++?
9 января 2009 в 13:03
А как насчет посмотреть исходники ceil() из math.h?
http://codesearch.google.com в помощь
9 января 2009 в 13:03
Аа, так оно на асме и написано.
http://www.google.com/codesearch/p?hl=en#crzNwex9NZ0...
9 января 2009 в 13:04
y=int(x+0.5) – округление в большую сторону до целого числа
9 января 2009 в 13:04
Нуу, это неинтересно
9 января 2009 в 13:04
о!) Спасибо большое)
9 января 2009 в 14:00
>Нуу, это неинтересно
Краткость – сестра таланта )))
9 января 2009 в 14:00
> y=int(x+0.5)
Это стандартное округление, т.е. "2.3 -> 2", а надо "2.3 -> 3".
Я бы попробовал так:
if (x > 0)
{
y = (int)x;
if (y < x) // проверяем, что получили число меньшее исходного.
++y;
}
else
{
y = x; // Отбрасываем дробную часть, это как раз будет большее число.
}
9 января 2009 в 14:01
y = int(x+0.5) – это как раз 2.3 -> 3.
9 января 2009 в 15:00
Павел! А как тогда будет округлять y=int(x)???
9 января 2009 в 15:02
тогда y = int(x+0.99999)