diff --git a/target-service/files/welcome.txt b/target-service/files/welcome.txt new file mode 100644 index 0000000..13d6eec --- /dev/null +++ b/target-service/files/welcome.txt @@ -0,0 +1 @@ +hello from storage \ No newline at end of file diff --git a/target-service/src/main/java/com/example/targetservice/service/OrderService.java b/target-service/src/main/java/com/example/targetservice/service/OrderService.java index 60e9cf4..7826ef5 100644 --- a/target-service/src/main/java/com/example/targetservice/service/OrderService.java +++ b/target-service/src/main/java/com/example/targetservice/service/OrderService.java @@ -16,7 +16,7 @@ public int calculateUnitPrice(int totalCents, int quantity) { /** * Calculates the discounted price for a bulk order. - * BUG: Uses double for intermediate calculation, causing floating-point precision loss. + * Uses BigDecimal throughout to avoid floating-point precision loss. */ public BigDecimal calculateDiscountPrice(BigDecimal total, double discountRate, int quantity) { if (quantity <= 0) { @@ -25,7 +25,8 @@ public BigDecimal calculateDiscountPrice(BigDecimal total, double discountRate, if (discountRate <= 0 || discountRate >= 1) { throw new IllegalArgumentException("discountRate must be between 0 and 1, but got: " + discountRate); } - double perItem = total.doubleValue() * discountRate; - return BigDecimal.valueOf(perItem * quantity); + BigDecimal discountRateBD = BigDecimal.valueOf(discountRate); + BigDecimal quantityBD = BigDecimal.valueOf(quantity); + return total.multiply(discountRateBD).multiply(quantityBD); } }