欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Java float或double保留两位小数

程序员文章站 2022-03-01 13:51:26
...

不管是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种方案、希望对大家有用