Your skill will accomplishwhat the force of many cannot PerlMonks

### Re^2: float values and operators

by ikegami (Pope)
 on Aug 11, 2004 at 21:41 UTC ( #382103=note: print w/replies, xml ) Need Help??

in reply to Re: float values and operators
in thread float values and operators

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)

Create A New User
Node Status?
node history
Node Type: note [id://382103]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (7)
As of 2018-09-19 09:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Eventually, "covfefe" will come to mean:

Results (164 votes). Check out past polls.

Notices?