Contents
Deep Breakdown
What it tells me (Situation Awareness): The symbol means approximately equal to. It signals that two values are close but not exactly the same. In DA/DS you use this constantly: rounding results for stakeholder reports, describing irrational constants like or , expressing model outputs with controlled precision, and acknowledging that floating-point arithmetic on computers always introduces tiny rounding errors. Whenever you say "the accuracy is about 92%" you are implicitly using .
Flowchart
Real-world use
Where it is used
Reporting model metrics in dashboards and exec summaries, describing mathematical constants, communicating results to non-technical stakeholders, documentation where full precision would be misleading or unreadable.
Problem it solves
The square root of 2 is , an infinite non-repeating decimal. Writing the full value is impossible. Writing would be wrong because it implies exactness. The symbol bridges the gap: you state a usable value while being mathematically honest that you rounded.
How it solves the problem
explicitly tells the reader "this has been rounded or truncated, the error is small relative to the context." It is a communication convention, not a mathematical operation. It sets appropriate expectations for precision.
Example in a business
An executive dashboard shows raw model accuracy as . You write: "Model accuracy ." You are honest that this is rounded, but the level of precision is appropriate for the business decision being made.
The formula, piece by piece
Breaking the notation piece by piece:
-
: the "approximately equal" sign. Two wavy lines stacked (like two tildes). From the Latin approximus, "very near."
-
Compare the family of related symbols:
-
exact equality - approximately equal (close, rounded) - identical by definition - congruent (same shape and size, geometry) - asymptotically equivalent, or "distributed as" (probability) - proportional to Formally: means for some acceptable tolerance agreed upon in context.
The (epsilon) is never written explicitly; it is implied by the application.
The formula in words
" means: the absolute difference between and is small enough to be ignored for our current purpose. We are rounding or truncating, and the result is practically useful even if not mathematically exact." Manual example: . The exact value of has infinitely many non-repeating decimals. is close enough for nearly all engineering and data work.
Critical Concepts
- Context-dependent tolerance: what counts as "close enough" depends on the application. In financial reconciliation, a difference matters. In model performance for an MVP review, it probably does not.
- Not transitive without checking: if and , you cannot automatically conclude . Each approximation has an error. Errors accumulate.
- Floating-point arithmetic: computers represent real numbers in binary with finite bits. Every floating-point operation introduces a tiny error. exactly in most languages. This is why you use tolerance checks, not exact equality, when comparing floats.
- Significant figures: the number of meaningful digits you keep. More significant figures = less approximation = more precision. A result reported as has 2 significant figures; has 3.
- False precision: reporting accuracy from a 50-sample test set is false precision.
The sample is too small to support that many decimal places. The mindset helps you calibrate how many digits are actually meaningful given your data size.
Step-by-step calculation (tiny example)
Input: express to 2 decimal places.
Step 1: Compute the exact value . This is irrational: the decimal never ends and never repeats.
Step 2: Identify the rounding digit We want 2 decimal places. The value is . Look at the third decimal place: it is . Since , we round down (leave the second decimal as ).
Step 3: Write the approximation with the correct symbol . Read: "The square root of 2 is approximately 1.41." The symbol is what makes this mathematically honest instead of mathematically wrong.
Code examples
Beginner example (Python)
import math # Exact value of sqrt(2): Python shows many decimal places
exact = math.sqrt(2)
print(exact) # 1.4142135623730951 # Approximation to 2 decimal places
approx = round(exact, 2)
print(approx) # 1.41 # Floating-point approximation trap
print(0.1 + 0.2) # 0.30000000000000004 (NOT exactly 0.3)
print(0.1 + 0.2 == 0.3) # False - exact comparison fails for floats
print(abs((0.1 + 0.2) - 0.3) < 1e-10) # True - use tolerance-based comparisonBeginner example (R)
# Exact value of sqrt(2)
exact <- sqrt(2)
print(exact) # 1.414214 (R shows fewer digits by default) # Approximation to 2 decimal places
approx_val <- round(exact, digits = 2)
print(approx_val) # 1.41 # Floating-point behavior in R
print(0.1 + 0.2) # 0.3 (R hides the tiny error in display)
print(0.1 + 0.2 == 0.3) # FALSE (exact comparison still fails)
print(all.equal(0.1 + 0.2, 0.3)) # TRUE (all.equal uses a tolerance internally)Professional example (Python)
import numpy as np # Scenario: reporting model metrics with controlled precision for different audiences
raw_metrics = { "accuracy": 0.923847162, "precision": 0.887341209, "recall": 0.901234567, "f1_score": 0.894230451,
} # Technical report: 4 decimal places for ML engineers
technical_report = {k: round(v, 4) for k, v in raw_metrics.items()} # Executive report: 1 decimal place as percentage
executive_report = {k: round(v * 100, 1) for k, v in raw_metrics.items()}
print("Technical report (4 decimal places):")
for metric, value in technical_report.items():
print(f" {metric} ≈ {value}")
print("\nExecutive report (1 decimal place, as %):")
for metric, value in executive_report.items():
print(f" {metric} ≈ {value}%") # Takeaway: approximation is a communication decision, not just a math one.
# The raw number has more precision than is meaningful for most audiences.Professional example (R)
# Scenario: reporting model metrics with controlled precision for different audiences
raw_metrics <- list( accuracy = 0.923847162, precision = 0.887341209, recall = 0.901234567, f1_score = 0.894230451
) # Technical report: 4 decimal places for ML engineers
technical_report <- lapply(raw_metrics, function(v) round(v, 4)) # Executive report: 1 decimal place as percentage
executive_report <- lapply(raw_metrics, function(v) round(v * 100, 1))
cat("Technical report (4 decimal places):\n")
for (nm in names(technical_report)) { cat(sprintf(" %s ≈ %s\n", nm, technical_reportnm))
}
cat("\nExecutive report (1 decimal place, as %):\n")
for (nm in names(executive_report)) { cat(sprintf(" %s ≈ %s%%\n", nm, executive_reportnm))
}
# Takeaway: approximation is a communication decision, not just a math one.Source: AIO p. 30 of 286