[Moscow.pm] int

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


> 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