[Moscow.pm] WTF?

Alexander Lourier aml на rulezz.ru
Вт Дек 23 02:17:02 PST 2008


On Tuesday 23 December 2008 13:09:38 Yuri Pac wrote:

> $ perl -MData::Dumper -e 'print Dumper( 15.50 eq 15.5 )'
> $VAR1 = 1;
> $ perl -MData::Dumper -e 'print Dumper( '15.50' eq '15.5' )'
> $VAR1 = 1;
> $ perl -MData::Dumper -e 'print Dumper( '15.50000' eq '15.5' )'
> $VAR1 = 1;
> $ perl -MData::Dumper -e 'print Dumper( '15.50000' == '15.5' )'
> $VAR1 = 1;
> $ perl -MData::Dumper -e 'print Dumper( "15.5000" eq "15.5" )'
> $VAR1 = '';
> $ perl -MData::Dumper -e 'print Dumper( "15.5000" == "15.5" )'
> $VAR1 = 1;

Проблема не перловая, на самом деле. Решение или abs(X1 - X2) < $epsilon, как 
уже посоветовали, либо вид сбоку на то же самое - Math::FixedPrecison. Есть 
ещё Math::BigFloat - там по-другому арифметика делается. Может, подойдет.


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