The trunc_f32_u numeric instruction removes the fractional part of an f32 value and outputs it as an unsigned integer.
This is a separate instruction, trunc, which removes the fractional part of a float and outputs a float.
There are also other truncate integer conversion instructions:
(module
(import "console" "log" (func $log (param i32)))
(func $main
f32.const 2344.8 ;; load a number onto the stack
i32.trunc_f32_u ;; discard decimal part and return unsigned integer
call $log ;; log the result
)
(start $main)
)const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });value_type.trunc_f32_u
value_typeThe type of value the instruction is being run on. The following types support trunc_f32_u:
i32i64trunc_f32_uThe trunc_f32_u instruction. Must always be included after the value_type and a period (.).
[input] -> [output]
inputThe input floating point number.
outputThe output integer.
| Instruction | Binary format | Example text => binary |
|---|---|---|
i32.trunc_f32_u | 0xa9 | i32.trunc_f32_u => 0xa9 |
i64.trunc_f32_u | 0xaf | i64.trunc_f32_u => 0xaf |