Java float或double保留两位小数
2015-06-26 09:28:46  By: dwtedx

不管是Java Web项目还是Android项目、很多时候都需要使用到保留两位小数问题、经过查找、本文将给出几种方案、大家可根据项目需要自己决定使用那种方法


方案一、四舍五入

double f = 111231.5585; 
BigDecimal b = new BigDecimal(f); 
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 
//保留两位小数 


方案二、DecimalFormat

1、用DecimalFormat 返回的是String格式的、该类对十进制进行全面的封装、像%号、千分位、小数精度、科学计算等

float price=1.2;
//构造方法的字符格式这里如果小数不足2位,会以0补足
DecimalFormat decimalFormat = new DecimalFormat(".00");
//format 返回的是字符串
String p = decimalFomat.format(price);


例:new DecimalFormat("#.00").format(3.1415926)

#.00 表示两位小数 #.0000四位小数 以此类推...


方案三、String.format

double d = 3.1415926;
String result = String.format("%.2f");

%.表示小数点前任意位数、2表示两位小数、格式后的结果为f、表示浮点型


方案四、NumberFormat

NumberFormat ddf1 = NumberFormat.getNumberInstance() ;
void setMaximumFractionDigits(int digits) 

digits 显示的数字位数、为格式化对象设定小数点后的显示的最多位、显示的最后位是舍入的

事例代码

double x=23.5455; 
NumberFormat ddf1=NumberFormat.getNumberInstance() ; 

ddf1.setMaximumFractionDigits(2); 
String s= ddf1.format(x);


方案五、Math.round

用Math.round计算,这里返回的数字格式的

float price = 89.89;
int itemNum = 3;
float totalPrice = price * itemNum;
//如果要求精确4位就*10000然后/10000
float num = (float)(Math.round(totalPrice*1000))/1000;


以上就是Java保留两位小数的5种方案、希望对大家有用

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+