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
