[ic] [PATCH] Expand range of round_to_frac_digits to handle exponentized numbers
Brian J. Miller
brian at endpoint.com
Wed Sep 2 14:15:40 UTC 2009
---
lib/Vend/Util.pm | 20 +++++++++++++++-----
1 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/lib/Vend/Util.pm b/lib/Vend/Util.pm
index 8356b84..5be6b5a 100644
--- a/lib/Vend/Util.pm
+++ b/lib/Vend/Util.pm
@@ -269,12 +269,22 @@ sub round_to_frac_digits {
else {
$digits = 2;
}
- my @frac;
- $num =~ /^(-?)(\d*)(?:\.(\d+))?$/
- or return $num;
+ if ($num =~ /^(-?)(\d*)(?:\.(\d+)(?:e-(\d+)))?$/) {
+ # this number sufficiently close to zero for our purposes
+ return 0;
+ }
+ elsif ($num =~ /^(-?)(\d*)(?:\.(\d+))?$/) {
+ # no op
+ }
+ else {
+ warn "Vend::Util::round_to_frac_digits: invalid number ($num)\n";
+ return $num;
+ }
+
my $sign = $1 || '';
- my $int = $2;
- @frac = split(m{}, ($3 || 0));
+ my $int = $2;
+ my @frac = split(m{}, ($3 || 0));
+
local($^W) = 0;
my $frac = join "", @frac[0 .. $digits - 1];
if($frac[$digits] > 4) {
--
1.5.6.3
More information about the interchange-users
mailing list