Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Округление числа


Автор: KesT 4.12.2002, 02:48
Скажите плиз как округлить число допустим 5.71428571428571 или 122.5 или любое НЕ целое число до целых??

Автор: Cepera 4.12.2002, 03:50
use POSIX;
sub round {floor($_[0]+0.5);}

Автор: KesT 4.12.2002, 03:59
А можно поточнее??? Куда именно вписывать, как подключать.

Автор: NightGoblin 4.12.2002, 10:22
Дык а че там подключать - определяешь такую функцию, как написано, а потом вызываешь $rounded_value = round ($value); В итоге, в $rounded_value будет округленное значение $value. (5.3 => 5; 5.5 => 6)

Автор: Cepera 4.12.2002, 15:18
совершенно верно

Автор: KesT 4.12.2002, 20:00
Спасибо приогромное.

Автор: HalkaR 8.12.2002, 07:03
В общем-то если не предпологается что-то особенно замудрое тоже самое можно сделать regexp'ом. Что-то типа
$text =~s/^(.+?\...).*?)/$1/;
Насколько это быстрее или медленнее не знаю, но хоть громоздкий модуль грузить не надо.

Автор: NightGoblin 11.12.2002, 08:40
мдяя... тогда уж проще сделать int ($text) - проблема в том, что работать это будет уродливо, так же, как и через regexp, разве только быстрее. А чтобы не грузить весь модуль из-за одной функции, можно написать

use POSIX "floor";

Автор: konst 12.12.2002, 02:48
без подгрузки модулей:

$b = sprintf("%.0f",$a);

:baaa

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)