Arithmetic Operations
Sentrie supports standard arithmetic operations for working with numeric values. All numeric operations work with the unified number type, which is backed by float64.
Basic Operations
Section titled “Basic Operations”Addition (+)
Section titled “Addition (+)”let sum: number = 5 + 3 -- Result: 8let total: number = 2.5 + 1.5 -- Result: 4.0Subtraction (-)
Section titled “Subtraction (-)”let difference: number = 10 - 7 -- Result: 3let result: number = 5.5 - 2.5 -- Result: 3.0Multiplication (*)
Section titled “Multiplication (*)”let product: number = 4 * 6 -- Result: 24let area: number = 3.75 * 2.0 -- Result: 7.5Division (/)
Section titled “Division (/)”let quotient: number = 15 / 3 -- Result: 5.0let precise: number = 7 / 2 -- Result: 3.5Modulo (%)
Section titled “Modulo (%)”let remainder: number = 10 % 3 -- Result: 1let even_check: number = 8 % 2 -- Result: 0Division and Precision
Section titled “Division and Precision”Integer Division
Section titled “Integer Division”let result: number = 8 / 3 -- Result: 2.6666666666666665let whole: number = 10 / 2 -- Result: 5.0Division always returns a numeric result.
Zero Division
Section titled “Zero Division”-- This will cause an errorlet invalid: number = 5 / 0 -- Error: division by zeroMixed Mode Arithmetic
Section titled “Mixed Mode Arithmetic”Mixed Numeric Operations
Section titled “Mixed Numeric Operations”let mixed_add: number = 5 + 2.5 -- Result: 7.5let mixed_multiply: number = 3 * 1.5 -- Result: 4.5let result: number = 10 - 7.2 -- Result: 2.8All numeric values are handled uniformly as the number type.
Practical Examples
Section titled “Practical Examples”Shape Calculations
Section titled “Shape Calculations”shape Rectangle { width!: number height!: number}
fact rect: Rectangle
let area: number = rect.width * rect.heightlet perimeter: number = 2 * (rect.width + rect.height)let aspect_ratio: number = rect.width / rect.heightPercentages and Discounts
Section titled “Percentages and Discounts”let price: number = 100.0let discount_percent: number = 15let discount_amount: number = price * (discount_percent / 100.0)let final_price: number = price - discount_amount-- Result: 85.0Statistical Operations
Section titled “Statistical Operations”let scores: list[number] = [85, 92, 78, 96]let total: number = reduce scores from 0 as score, idx { yield score }let average: number = total / count scores-- Result: 87.75Best Practices
Section titled “Best Practices”Use Explicit Types
Section titled “Use Explicit Types”-- Good: Clear type intentionlet precise_result: number = 7 / 3
-- Avoid: Type inference confusionlet result = 7 / 3Handle Division by Zero
Section titled “Handle Division by Zero”let divisor: number = 0let safe_result: number = divisor != 0 ? 10 / divisor : 0.0Use Parentheses for Clarity
Section titled “Use Parentheses for Clarity”-- Good: Clear precedencelet result: number = (2 + 3) * 4
-- Avoid: Relying on operator precedencelet result: number = 2 + 3 * 4