點燈坊

失くすものさえない今が強くなるチャンスよ

手動從 Float 轉成 Integer

Sam Xiao's Avatar 2020-07-25

雖然 ECMAScript 對於數字只有 Number,且本質是 Float,但人類的數字系統還是有 Integer 與 Float 之分,且 Float 轉 Integer 亦是實務上常見的需求。

Version

macOS Catalina 10.15.6
VS Code 1.47.2
Quokka 1.0.311
ECMAScript 5

標準做法

Math.round(23.9) // ?
Math.floor(23.9) // ?
Math.ceil(23.9) // ?
  • **Math.floor()**:無條件捨去,也就是將小數部分捨去
  • **Math.ceil()**:無條件進入
  • **Math.round()**:四捨五入

float000

Bitwise Operator

Math.floor(23.9) // ?
23.9 | 0 // ?
~~23.9 // ?

若想要 無條件捨去,除了 Math.floor() 外,也可以使用 | 0~~ 快速將小數部分捨去。

float001

Conclusion

  • | 0~~ 動用 binary 特性,雖然有點 tricky,但只要知道後還是蠻好用的

Reference

Bret Cameron, 12 JavaScript Tricks You Won’t Find in Most Tutorials