58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
---
|
|
epic: 6
|
|
story: 6.7
|
|
title: "Rounding Functions"
|
|
status: draft
|
|
---
|
|
|
|
## Epic 6 — Advanced Math & Functions
|
|
**Goal:** Scientific, financial, and power-user math.
|
|
|
|
### Story 6.7: Rounding Functions
|
|
|
|
As a **CalcPad user**,
|
|
I want rounding functions including natural-language "round to nearest" and standard floor/ceil/round,
|
|
So that I can control numeric precision in my calculations.
|
|
|
|
**Acceptance Criteria:**
|
|
|
|
**Given** the user writes `round 21 up to nearest 5`
|
|
**When** the engine evaluates
|
|
**Then** the result is `25`
|
|
|
|
**Given** the user writes `round 22 down to nearest 5`
|
|
**When** the engine evaluates
|
|
**Then** the result is `20`
|
|
|
|
**Given** the user writes `round 23 to nearest 5`
|
|
**When** the engine evaluates
|
|
**Then** the result is `25` (standard rounding: 23 is closer to 25 than 20)
|
|
|
|
**Given** the user writes `floor(3.7)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `3`
|
|
|
|
**Given** the user writes `floor(-3.2)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `-4` (floor rounds toward negative infinity)
|
|
|
|
**Given** the user writes `ceil(3.2)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `4`
|
|
|
|
**Given** the user writes `ceil(-3.7)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `-3` (ceil rounds toward positive infinity)
|
|
|
|
**Given** the user writes `round(3.456, 2)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `3.46` (rounded to 2 decimal places)
|
|
|
|
**Given** the user writes `round(3.456, 0)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `3`
|
|
|
|
**Given** the user writes `round(2.5)`
|
|
**When** the engine evaluates
|
|
**Then** the result is `3` (round half up, or the chosen rounding convention is documented)
|