[Perl]Получить дробную часть от вещественного числа.

ser21444

Я не программист, но понадобилось.
Подскажите как ?
Пробую использовать modf (возвращает дробную часть, насколько я понимаю). Получается не то, что предполагаю.
Вот пример кода:

#!/usr/bin/perl -w
use POSIX;
$num=12.34;
print modf($num);


результат:
D:\programs>perl test2.pl
0.3412
не понятно почему так ...
и вот:

#!/usr/bin/perl -w
use POSIX;
$num=12.34;
print modf($num)*2;


результат:
24
тут мне вообще не понятно.
Где моя ошибка ?

Maverick-I

#!/usr/bin/perl
use strict;
my $num = 12.34;
$num =~ /(\.\d+)$/;
print 0+$1;

ser21444

работает, спасибо !
т.е. какой-нить готовой функции для такой цели нет ?

eduard615

1.2345e+2 ?
2 :
perldoc POSIX
perldoc -f shift
внимательно читать, что возвращает modf

Maverick-I

25$ / час

shlyumper

Хацкеры, блин.
Для положительных -
$a - int($a)
Для любых -
$a<0?$a + int(-$a):$a - int($a)

Ivan8209

А что, int можно брать только от неотрицательных?
---
...Я работаю антинаучным аферистом...

shlyumper

int в перле вообще несколько странный. Правильнее всего было бы так:


use POSIX;
...
$a>0?$a-POSIX::floor($a):$a-POSIX::ceil($a)

Chupa



perl -e 'use POSIX;$num=12.34;@a=modf($num);print @a[0],"\n",@a[1],"\n";'
0.34
12

Оставить комментарий
Имя или ник:
Комментарий: