NAME "Encode::Float" - Encode/decode float as a string for sorting. SYNOPSIS use Encode::Float; my $encoder = Encode::Float->new(); my @list; for (my $i = 0 ; $i < 10 ; $i++) { my $float = (.5 - rand) * 10**int(10 - 20 * rand); $float = 0 if $i == 0; my $encoded = $encoder->encode($float); my $decoded = $encoder->decode($encoded); my $error = $encoder->getRelativeDifference($float, $decoded); push @list, [ $encoded, $float, $decoded, $error ]; } @list = sort { $a->[0] cmp $b->[0] } @list; foreach (@list) { print join(',', @$_) . "\n"; } DESCRIPTION "Encode::Float" encodes and decodes floating point numbers as fixed length positive decimal integers that preserve their order (less rounding errors), that is, sorting the encoded integers also sorts the floating point numbers. CONSTRUCTOR "new" The method "new" creates an instance of the "Encode::Float" class with the following parameter: "digitsOfAccuracy" digitsOfAccuracy => 16 "digitsOfAccuracy" is an optional parameter that sets the number of decimal digits to preserve in the floating point number; the default is 16. METHODS "encode" The method "encode" takes a floating point number as its only parameter and returns its integer encoding. "decode" The method "decode" takes an encoded floating point number (a positive integer) and returns its floating point number. "getRelativeDifference" The method "getRelativeDifference (floatA, floatB)" computes the relative difference between the floating point numbers "floatA" and "floatB", which is "abs(floatA - floatB)/max(abs(floatA), abs(floatB))" or zero if both numbers are zero. INSTALLATION Use CPAN to install the module and all its prerequisites: perl -MCPAN -e shell >install Encode::Float BUGS Please email bugs reports or feature requests to "bug-encode-float@rt.cpan.org", or through the web interface at . The author will be notified and you can be automatically notified of progress on the bug fix or feature request. AUTHOR Jeff Kubina COPYRIGHT Copyright (c) 2013 Jeff Kubina. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. KEYWORDS decoding, double, encoding, float SEE ALSO CPAN, Sort::External