https://cuelang.org/docs/references/spec/#numeric-literals
その前に、新しいバージョンが出ていたのでアップデート。
$ go install cuelang.org/go/cmd/cue@latest
$ cue version
cue version v0.5.0
go version go1.18.9
-compiler gc
CGO_ENABLED 1
GOARCH arm64
GOOS linux
一通り試す。
$ cat numeric.cue
dec: 123
dec_long: 123_456_789
m: 1K
mi: 1Ki
bin: 0b10000
bin_long: 0b100000000_00000000
oct: 0o700
oct_long: 0o700_000_000
hex: 0xff
hex_long: 0xdead_beef
f: 0.1
fn: .2
e: 1e-1
e2: 1.2e-1
$ cue eval numeric.cue
dec: 123
dec_long: 123456789
m: 1000
mi: 1024
bin: 16
bin_long: 65536
oct: 448
oct_long: 117440512
hex: 255
hex_long: 3735928559
f: 0.1
fn: 0.2
e: 0.1
e2: 0.12
i 付マルチプレクサ(Mi とか)の前の数値に小数点は使えない? 仕様書では使える様に見えるが。ソースを調査するチャンスかも。
$ cat numeric2.cue
m: 1.2Mi
$ cue eval numeric2.cue
m: parse error: number cannot be represented as int:
./numeric2.cue:1:4