How to Check If a Number Is Zero in Python
Checking if a number is zero is a common operation in programming, essential for preventing errors like division by zero and managing control flow. While integer comparisons are straightforward, floating-point numbers require careful handling due to precision limitations.
This guide explains how to check for zero correctly for both integers and floating-point values using direct comparison and tolerance-based methods.
Method 1: Direct Comparison (For Integers)
For integers (int), you can directly compare the variable with 0 using the equality operator ==. This is precise and safe.
num = 0
# ✅ Correct: Direct comparison for integers
if num == 0:
print("The number is Zero.")
else:
print("The number is NOT Zero.")
Output:
The number is Zero.
Method 2: Handling Floating-Point Precision
Floating-point numbers (float) are stored as approximations. A calculation that should mathematically result in 0.0 might result in a tiny number like 1e-16 due to rounding errors.
Problem
val = 0.1 + 0.2 - 0.3
print(f"Calculated Value: {val}")
# ⛔️ Incorrect: This often fails due to precision
if val == 0:
print("Zero")
else:
print("Not Zero (Unexpected!)")
Output:
Calculated Value: 5.551115123125783e-17
Not Zero (Unexpected!)
Solution: Using math.isclose()
To check if a float is effectively zero, check if it is "close enough" (within a tolerance/epsilon).
import math
val = 0.1 + 0.2 - 0.3 # Approx 5.55e-17
# ✅ Correct: Check if value is close to 0 with absolute tolerance
# abs_tol=1e-9 means any number smaller than 0.000000001 is treated as zero
if math.isclose(val, 0, abs_tol=1e-9):
print("The number is effectively Zero.")
else:
print("The number is NOT Zero.")
Output:
The number is effectively Zero.
Always use abs_tol when comparing against zero, as relative tolerance (rel_tol) does not work well when the target value is exactly 0.
Method 3: Preventing Division by Zero
Checking for zero is critical before performing division. Instead of checking with if, the Pythonic way often involves try-except blocks to handle the error gracefully if it occurs.
numerator = 10
denominator = 0
try:
# Attempt division
result = numerator / denominator
print(f"Result: {result}")
except ZeroDivisionError:
# ✅ Correct: Handle the error specifically
print("Error: Cannot divide by zero.")
Output:
Error: Cannot divide by zero.
Conclusion
To check if a number is zero in Python:
- Integers: Use
num == 0for direct comparison. - Floats: Use
math.isclose(num, 0, abs_tol=1e-9)to handle precision errors. - Division: Use
try-except ZeroDivisionErrorto safely handle zero denominators.