function UDecimalUnimply(value, precision) {
    assert(value != null, "value is required");
    value = value === "object" && value.toString ? value.toString() : String(value);
    assert(/^\d+$/.test(value), 'invalid whole number ' + value);

    // Ensure minimum length
    var pad = precision - value.length;
    if (pad > 0) {
        value = '' + "0".repeat(pad) + value;
    }

    var dotIdx = value.length - precision;
    value = value.slice(0, dotIdx) + '.' + value.slice(dotIdx);
    return UDecimalString(value); // Normalize
}