Promise. Under profile core-2026.1, number is decimal128: 34 significant digits, round-half-even. 0.1 + 0.2 == 0.3 is true. An integer is not a number — 1 + 1 and 1 + 1.0 differ by type, and the conformance suite checks both.
Decimal128 in the data plane
34 significant digits, round-half-even. 0.1 + 0.2 == 0.3 is true, and the suite checks it.
Integer is not number
1 + 1 and 1 + 1.0 differ by type. Quantity and price stop being interchangeable by accident.
Canonical form on the wire
A number that cannot ride in a JSON number without losing its canonical form is emitted as a JSON string.
form invoice version = "1.0" {
field unit_price { type = number, validate { min = 0 } }
field quantity { type = integer, validate { min = 1 } }
field vat {
type = number
value = round(unit_price * quantity * 0.2, 2)
}
field monthly {
type = number
value = round((unit_price * quantity + vat) / 12, 2)
}
output {
unit_price: number
quantity: integer
vat: number
monthly: number
}
}
On the wire, numbers that cannot ride in a JSON number without losing the canonical form are emitted as JSON strings.