--- a/cart.mjs +++ b/cart.mjs @@ -1,3 +1,7 @@ export function total(items) { - return items.reduce((sum, x) => sum + x.price * x.quantity, 0); + const sum = items.reduce((sum, x) => { + if (!Number.isFinite(x.price) || !Number.isFinite(x.quantity) || x.price < 0 || x.quantity < 0) throw new RangeError("Invalid item"); + return sum + x.price * x.quantity; + }, 0); + return Math.round((sum + Number.EPSILON) * 100) / 100; }