From b527af627aa13d6ba6197b3dd957e91b2ba75705 Mon Sep 17 00:00:00 2001 From: srowen Date: Thu, 30 Sep 2010 15:44:12 +0000 Subject: [PATCH] Fix small display problem when extension starts with 9 git-svn-id: http://zxing.googlecode.com/svn/trunk@1608 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../zxing/oned/UPCEANExtensionSupport.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/com/google/zxing/oned/UPCEANExtensionSupport.java b/core/src/com/google/zxing/oned/UPCEANExtensionSupport.java index dea116d6..15d15d38 100644 --- a/core/src/com/google/zxing/oned/UPCEANExtensionSupport.java +++ b/core/src/com/google/zxing/oned/UPCEANExtensionSupport.java @@ -160,7 +160,7 @@ final class UPCEANExtensionSupport { } private static String parseExtension5String(String raw) { - String currency = null; + String currency; switch (raw.charAt(0)) { case '0': currency = "£"; @@ -169,18 +169,28 @@ final class UPCEANExtensionSupport { currency = "$"; break; case '9': - if ("99991".equals(raw)) { + // Reference: http://www.jollytech.com + if ("90000".equals(raw)) { + // No suggested retail price + return null; + } else if ("99991".equals(raw)) { + // Complementary return "0.00"; } else if ("99990".equals(raw)) { return "Used"; } + // Otherwise... unknown currency? + currency = ""; break; default: currency = ""; break; } int rawAmount = Integer.parseInt(raw.substring(1)); - return currency + (rawAmount / 100) + '.' + (rawAmount % 100); + String unitsString = String.valueOf(rawAmount / 100); + int hundredths = rawAmount % 100; + String hundredthsString = hundredths < 10 ? "0" + hundredths : String.valueOf(hundredths); + return currency + unitsString + '.' + hundredthsString; } } -- 2.20.1