|
Тема
|
Perl number
|
|
Автор | jayd (Нерегистриран) |
Публикувано | 01.06.06 12:34 |
|
Някой може ли да ми каже как в Perl мога да закръгля число до втория символ:
т.е. имам примерно
$num=21.341;
и резултата искам да е:
21.34
Благодаря предварително
| |
Тема
|
Re: Perl number
[re: jayd]
|
|
Автор | priest (Нерегистриран) |
Публикувано | 01.06.06 19:17 |
|
използвай
$num = 21.341;
$num = sprintf("%.2f", $num);
# $num == 21.34
# perldoc -f psrintf
| |
Тема
|
Re: Perl number
[re: priest]
|
|
Автор | novobranec (Нерегистриран) |
Публикувано | 10.06.06 23:56 |
|
Това не е закръгляване а резачка. В Perl няма функция за закръгляване, трябва сам да си я напишеш или google...
| |
|
напротив - има закръгляне - погледни следните функции:
ceil - This is identical to the C function "ceil()", returning the smallest integer value greater than or equal to the given numerical argument.
floor - This is identical to the C function "floor()", returning the largest integer value less than or equal to the numerical argument.
Core module POSIX
но явно, че тук потребителя иска точно "орязване", само че играта на думи ли е важна или крайния резултат?
| |
Тема
|
Re: Perl number
[re: jayd]
|
|
Автор | Jud (Нерегистриран) |
Публикувано | 23.06.06 19:22 |
|
use Number::Format qw(:subs);
$num=21.341;
$num=round($num, 2);
| |
Тема
|
Re: Perl number
[re: supremacy]
|
|
Автор | novobranec (Нерегистриран) |
Публикувано | 25.06.06 23:17 |
|
Говорим за закръгляване на реални числа, не на цели. Ceil и Floor са за цели числа. Закръгляването в Perl се прави с проста собственоръчно написана функция или с външен модул (както е писал човека по-долу).
| |
|
по принцип от математиката е добре известно, че
round(x)=floor(x+0.5)
тука закръглянето на x.5 е нагоре.
Примерно за закръгляне до 2 цифри след десетичната точка можем да умножим по 100:
ето го закръглянето:
floor(100*$x+0.5)/100
| |
|
Ceil и Floor са за цели числа. - tova go kaji avtora na POSIX module-a, shte nauchi neshta, koito ne e znael.
kak se syhranqvat chislata ot perl interpretatora spored teb?
sledniq kod kakvo ti govori?
perl -MPOSIX -e 'print floor(1.1234567)'
### output: 1
perl -MPOSIX -e 'print ceil(1.1234567)'
### output: 2
| |
|
|
|
|