javascript
java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
javascript 解決默認(rèn)取整的坑(目前已知的最佳解決方案)
復(fù)現(xiàn)該問題
js在數(shù)字操作時(shí)總會(huì)取更高精度的結(jié)果,例如1234/10結(jié)果就是123.4,但是在c或者java中整數(shù)除以10的結(jié)果還是整數(shù),小數(shù)部分被舍去,不僅如此 *,%等運(yùn)算符也會(huì)出現(xiàn)這種結(jié)果,但我們有時(shí)候更希望舍去取整
使用Math標(biāo)準(zhǔn)庫(kù)
Math標(biāo)準(zhǔn)庫(kù)提供了Math.floor():向下取整Math.ceil():向上取整Math.round():四舍五入這三種取整方法,效率也不錯(cuò),但是在進(jìn)行一些操作時(shí),總感覺別扭,而且效率會(huì)偏低,查看了v8中Math部分的源碼后發(fā)現(xiàn)需要進(jìn)行非常多的操作后才能得到結(jié)果
在進(jìn)行Math.floor操作時(shí)會(huì)進(jìn)行很多操作,復(fù)雜度較高,有很多層遞歸才能獲得結(jié)果
使用按位運(yùn)算符
按位運(yùn)算符中的~是將數(shù)字按位取反,位運(yùn)算是js中計(jì)算較快的操作符,把浮點(diǎn)數(shù)兩次按位取反后可以獲得舍去取整的結(jié)果即Math.floor(5.6)==~~5.6)這是目前已知的最快解決方法
示例代碼
以上兩個(gè)函數(shù)獲取的結(jié)果完全一樣
總結(jié)
以上是生活随笔為你收集整理的java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python文本处理第三方库是什么_py
- 下一篇: 狂神java什么来头_狂神说Spring