java 数字保留2位小数 格式化为价格类型

旧时模样 提交于 2019-12-09 15:55:17

ava保留两位小数问题:

方式一:

double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
方式一中使用BigDecimal中的设置精确值,会四舍五入
保留两位小数  
---------------------------------------------------------------  

方式二:

java.text.DecimalFormat   df   =new   java.text.DecimalFormat("#.00");  
df.format(你要格式化的数字);

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

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

方式三:

double d = 3.1415926;

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

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

方式四:

NumberFormat ddf1=NumberFormat.getNumberInstance() ;

void setMaximumFractionDigits(int digits) 
digits 显示的数字位数 
为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的

这里指出,这样格式化数据的话,你会发现,小数点后面的精确度影响很大,首先你要理解format的原理,原理大概是这个公式一样

float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000

这样计算的话,自己可以笔算试试,出来的结果跟你想要的结果误差是比较大的

解决处理的方法:

把所有的Float数据,换成Double

方法五:

Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0

 

https://blog.csdn.net/qq_34412985/article/details/81022584

https://blog.csdn.net/qq_30983519/article/details/50515960

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!