Кстати, вчера наткнулись на старый код, который в 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