亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

整數按位整除并保留小數點后固定位數

標簽:
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

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

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

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消