截斷(浮點數到整數)
trunc 指令用於將浮點數轉換為整數。它之所以命名為截斷,是因為在轉換過程中會截斷數字的小數部分。此指令有有符號和無符號版本。
還有另一個 trunc 指令,它會在不轉換為整數的情況下截斷浮點數的小數部分。
試一試
(module
(import "console" "log" (func $log (param i32)))
(func $main
f32.const 10.5 ;; push an f32 onto the stack
i32.trunc_f32_s ;; convert from f32 to signed i32 rounding towards zero (.5 will be lost)
call $log ;; log the result
)
(start $main)
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });
語法
wat
;; push an f32 onto the stack
f32.const 10.5
;; convert from f32 to signed i32 rounding towards zero (.5 will be lost)
i32.trunc_f32_s
;; the top item on the stack will now be the value 10 of type f32
| 指令 | 二進位制操作碼 |
|---|---|
i32.trunc_f32_s |
0xa8 |
i32.trunc_f32_u |
0xa9 |
i32.trunc_f64_s |
0xaa |
i32.trunc_f64_u |
0xab |
i64.trunc_f32_s |
0xae |
i64.trunc_f32_u |
0xaf |
i64.trunc_f64_s |
0xb0 |
i64.trunc_f64_u |
0xb1 |