Greetings Monks!
I have an API that returns prices as floats in textual form and a database that contains prices in integer cents.
None of this can be changed.
I need to compare whether the prices retrieved through the API conform to the ones stored in the database.
Prototype:
This fails due to the way floats are stored in memory:#!/usr/bin/perl -w # use strict; use Data::Dumper; my $num1 = 1990; my $num2 = '19.90'; #my $num1 = 465; #my $num2 = '4.65'; $num2 += 0; $num2 *= 100; print Dumper($num1); print Dumper($num2); if ($num1 == $num2) { print "-> equal\n"; } else { print "-> different\n"; } $num2 = int($num2); print Dumper($num1); print Dumper($num2); if ($num1 == $num2) { print "-> equal\n"; } else { print "-> different\n"; }
For other values this sort of works but still requires the use of int():$VAR1 = 1990; $VAR1 = '1990'; -> different $VAR1 = 1990; $VAR1 = 1989; -> different
$VAR1 = 465; $VAR1 = '465'; -> different $VAR1 = 465; $VAR1 = 465; -> equal
What is the correct way of doing this within the given constraints?
In reply to number comparison with a twist by anotherguest
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |