[Moscow.pm] int

Eugene Toropov jt на aaanet.ru
Вт Июн 8 06:30:12 PDT 2010


Кстати, вчера наткнулись на старый код, который в 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
>
>
>> ash на saranda:~/test/cpp-float$ cat test.cpp
>> #include<iostream>
>>
>> using namespace std;
>>
>> int main() {
>>    float a = 19.4016;
>>    cout << int(a * 10000);
>>
>>    return 0;
>> }
>>
>> ash на saranda:~/test/cpp-float$ ./a.out
>> 194015
>>
>>
>>
>> 2010/6/8 Иван Бессарабов <ivan на bessarabov.ru>:
>>> Скрипт:
>>> {{{
>>> #! /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
>>> moscow-pm на pm.org | http://moscow.pm.org
>>>
>>
>>
>>
>> -- 
>> Andrew Shitov
>> ______________________________________________________________________
>> andy на shitov.ru | http://shitov.ru
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> 



Подробная информация о списке рассылки Moscow-pm