Кстати, вчера наткнулись на старый код, который в 5.8. еще работал, а в 5.10 уже нет:

5.8.8> perl -e 'use strict; my $a = [1, 2, 3]; print $...@$a}'
2

5.10.1> perl -e "use strict; my $a = [1, 2, 3]; print $...@$a}"
Can't use string ("3") as an ARRAY ref while "strict refs" in use at -e line 1.

Сам я всегда использовал $#$a, если было нужно.



perl -MPOSIX -e "print floor 19.4016 * 10000"
194015
perl -e "print sprintf '%d', 19.4016 * 10000"
194015


a...@saranda:~/test/cpp-float$ cat test.cpp
#include<iostream>

using namespace std;

int main() {
   float a = 19.4016;
   cout << int(a * 10000);

   return 0;
}

a...@saranda:~/test/cpp-float$ ./a.out
194015



2010/6/8 Иван Бессарабов <[email protected]>:
Скрипт:
{{{
#! /usr/bin/perl

my $a = "19.4016";

print '$a = ' . $a . "\n";
print '$a*10000 = ' . $a*10000 . "\n";
print 'int($a*1000) = ' . int($a*10000) . "\n";
}}}

Результат работы:
{{{
$a = 19.4016
$a*10000 = 194016
int($a*1000) = 194015
}}}

Да, в "perldoc -f int" написано что "machine representations of
floating-point numbers can sometimes produce counterintuitive
results", но я все равно сильно удивлен. Это нормально, что скрипт так
работает?
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org




--
Andrew Shitov
______________________________________________________________________
[email protected] | http://shitov.ru
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org


--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org


--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить