Привет всем, столкнулись со странным эффектом в 5.18
[scripter@dev-vbox:~]$ perl -v | fgrep ver This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi [scripter@dev-vbox:~]$ perl -E '$dd = "20141002"; say 0.8 * $dd * $dd + 1.55 * $dd + 59.3; say int( 0.8 * $dd * $dd + 1.55 * $dd + 59.3 );' 324528000469816 324528000469815 *[scripter@dev-vbox:~]$ perl -E '$dd = "20141002"; srand( 0.8 * $dd * $dd + 1.55 * $dd + 59.3 ); say rand()'* *0.261590199385868* [scripter@dev-vbox:~]$ perl -E '$dd = "20141002"; srand( int(0.8 * $dd * $dd + 1.55 * $dd + 59.3) ); say rand()' 0.261590199385868 В 5.14 аргумент srand приводится к целому с отбраыванием дробной части, так же как с int. scripter@work-desktop:~$ perl -v | fgrep ver This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi scripter@work-desktop:~$ perl -E '$dd = "20141002"; say 0.8 * $dd * $dd + 1.55 * $dd + 59.3; say int( 0.8 * $dd * $dd + 1.55 * $dd + 59.3 );' 324528000469816 324528000469815 *scripter@work-desktop:~$ perl -E '$dd = "20141002"; srand( 0.8 * $dd * $dd + 1.55 * $dd + 59.3 ); say rand()'* *0.132392508051456* scripter@work-desktop:~$ perl -E '$dd = "20141002"; srand( int(0.8 * $dd * $dd + 1.55 * $dd + 59.3) ); say rand()' 0.261590199385868 scripter@work-desktop:~$ perl -E '$dd = "20141002"; srand( int(0.8 * $dd * $dd + 1.55 * $dd + 59.3)+1 ); say rand()' 0.132392508051456 А в 5.18 округляется, так же как при выводе. Почему так? Такое поведение описано где-то? -- С уважением, Вадим Власов т.: +7 (916) 424-00-72
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
