第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

整數(shù)按位整除并保留小數(shù)點(diǎn)后固定位數(shù)

標(biāo)簽:
Android

先看看需求环境:比较大的数字按位整除,比如按千位或万位整除,并保留小数点后多少多少位,比如一位,两位这样。

这样的变态需求基本上属于高精度计算了,我们常用的主类型加上运算符不太好算,那么我们可以考虑使用一些特殊的类型,比如封装器

涉及计算的封装器可参考BigInteger 、BigDecimal ,一个是支持整数,一个支持定点数字

要留下小数点,那就没法用Integer了。



我们的核心逻辑就是构造BigDecimal,用setScale方法来计算并向最接近的数字舍入


先记住三个参数及Java中BigDecimal的8种舍入模式

Java中BigDecimal的8种舍入模式参看这里http://www.bdqn.cn/news/201311/11834.shtml


我们使用ROUND_HALF_EVEN来取最接近的结果,这个参数见仁见智,看哪个更接近自己想要的结果

被除数num     

除数max          进位数,如千进位或万进位

保留位数scale    如保留小数后1位


根据我们的需求整理一下实现:

[代码]java代码:

?

double tempResult = (double)num/max;//当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,因此使用double 精确转换

 

BigDecimal  bigdecimal  = new BigDecimal(Double.toString(tempResult ));//精确计算,用String来够造BigDecimal

 

Double resultScaled= bigdecimal .setScale(scale, BigDecimal.ROUND_HALF_EVEN).doubleValue();

 

 

String result;

 

if(resultScaled- Double.valueOf(resultScaled).intValue()== 0){//保留的小数为0则直接舍弃

result = String.valueOf(resultScaled.intValue());

}else{

result = resultScaled.toString();

}

return result;

<br>

 

原文链接:http://www.apkbus.com/blog-35555-60422.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消