I went nuts and here's a more general compare function (works like <=>)
sub TOLERANCE () { 1e-13 }
sub compare {
my ($a, $b, $tol) = @_;
$tol = TOLERANCE unless (defined($tol));
my $diff = ($a - $b);
if ($diff > +$tol) { return +1; }
if ($diff < -$tol) { return -1; }
return 0;
}
sub format_cmp {
my ($cmp) = @_;
if ($cmp < 0) {return "<"; }
if ($cmp == 0) {return "="; }
if ($cmp > 0) {return ">"; }
}
print('35 <=> 36 = ', format_cmp(35 <=> 36 ), ' ', f
+ormat_cmp(compare(35, 36 )), ' = compare(35, 36 )', "\
+n");
print('35 <=> 35 = ', format_cmp(35 <=> 35 ), ' ', f
+ormat_cmp(compare(35, 35 )), ' = compare(35, 35 )', "\
+n");
print('36 <=> 35 = ', format_cmp(36 <=> 35 ), ' ', f
+ormat_cmp(compare(36, 35 )), ' = compare(36, 35 )', "\
+n");
print('36.8 <=> 36.6+0.2 = ', format_cmp(36.8 <=> 36.6+0.2), ' ', f
+ormat_cmp(compare(36.8, 36.6+0.2)), ' = compare(36.8, 36.6+0.2)', "\
+n");
__END__
output
======
35 <=> 36 = < < = compare(35, 36 )
35 <=> 35 = = = = compare(35, 35 )
36 <=> 35 = > > = compare(36, 35 )
36.8 <=> 36.6+0.2 = < = = compare(36.8, 36.6+0.2)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.