How does JavaScript handle floating point precision issues?
Assesses fundamental understanding of JavaScript conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
JavaScript uses IEEE 754 double-precision (64-bit) floating-point format, which can cause precision issues with decimal numbers.
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false
Solutions:
- Using epsilon comparison:
function areEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
console.log(areEqual(0.1 + 0.2, 0.3)); // true
- Rounding to fixed decimals:
const result = Math.round((0.1 + 0.2) * 100) / 100; // 0.3
- Using toFixed() or toPrecision():
const sum = (0.1 + 0.2).toFixed(2); // "0.30"
const num = parseFloat(sum); // 0.3
- Working with integers (cents instead of dollars):
const price1 = 10; // $0.10 as 10 cents
const price2 = 20; // $0.20 as 20 cents
const total = price1 + price2; // 30 cents
const dollars = total / 100; // $0.30
- Using libraries for precise calculations:
// decimal.js, big.js, or bignumber.js
const Decimal = require('decimal.js');
const result = new Decimal(0.1).plus(0.2); // 0.3
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.