[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