← All examples

Deci more

deci's leftovers: mod.floor takes the divisor's sign, as integer mod.floor; pow takes a whole exponent and rounds like the other operations; a wider deci into a narrower one…

deci_more.zg
# deci's leftovers (owner, 2026-09-29): mod.floor takes the divisor's sign, as integer mod.floor; pow takes a whole
# exponent and rounds like the other operations; a wider deci into a narrower one fails
# too_many_digits; a deci may be a range type, with bounds written as bins' are.
MAIN {
    let 't': deci64 = 7.50;
    let 'm': deci64 = -7.50;
    std::print.stored['t' mod.floor 2, " ", 'm' mod.floor 2, " ", 't' mod.floor -2, newln];
    let 'r': deci64 = 1.05;
    std::print.stored['r' pow 10, " ", 'r' pow 0, " ", 'r' pow -1, newln];
    let 'r2': deci128 = 1.05;
    std::print.stored['r2' pow 10, newln];
    let 'n': int32 = 3;
    std::print.stored['r' pow 'n', newln];
    let 'x': deci64 = 3.141592653589793;
    let 'y' := to.deci32['x'] otherwise 0;
    let 'z': deci64 = 2.50;
    let 'zz' := to.deci32['z'] otherwise 0;
    std::print.stored['y', " ", 'zz', newln];
    let 'disc': deci64[min 0.0, max 1.0] = 0.15;
    let 'p' := to.deci64[min 0.0, max 1.0]["1.5"] otherwise 'disc';
    std::print.stored['disc', " ", 'p', newln];
}
Output
1.50 0.50 -0.50
1.628894626777441 1 0.9523809523809524
1.62889462677744140625
1.157625
0 2.50
0.15 0.15