Our methodology
We keep mathematical logic separate from the interface, use explicit units, and show assumptions where they can change a result.
Unit conversions
Calculations use full-precision conversion constants internally: 1 foot = 0.3048 metres, 1 inch = 0.0254 metres, 1 square foot = 0.09290304 square metres, and 1 cubic yard = 0.764554858 cubic metres. Displayed values are converted only after the underlying result is calculated.
Rounding
Intermediate calculations retain JavaScript numeric precision. Results are usually displayed to two decimal places, with whole units used for quantities such as bags or containers that must be purchased as complete items.
Waste factors
Waste is applied as a multiplier after the base quantity is calculated. A 10% setting multiplies the theoretical quantity by 1.10. The appropriate allowance depends on layout, breakage, compaction, spillage, cuts, and ordering constraints.
Material density and yield
Gravel weight uses the editable density shown in the form. Concrete bag estimates use visible typical yields of 0.30, 0.45, and 0.60 cubic feet for 40, 60, and 80 lb bags. Always use supplier data for a final order.
Testing approach
Pure TypeScript calculation functions are checked against hand-calculated examples, unit conversions, validation cases, waste factors, and impossible values. Browser smoke tests cover navigation, representative calculations, unit switching, mobile layout, and keyboard use.
Why real projects differ
Site dimensions vary, materials settle or spill, surfaces absorb coatings differently, and product packaging varies. Drawings, field measurements, manufacturer instructions, local regulations, and professional judgment take priority over these planning estimates.