1. 概述
这里记录下自己在开发中,对于金额、经纬度等数值,比如116.312606、39.981358等String类型的值,需要把 经纬度的String类型的值转为double,如果直接转为double,可能会有经纬度丢失,所以针对于这种数据,可以先把 String转为 BigDecimal,然后再转为 double,常用的转换如下:
// String - BigDecimal
BigDecimal b1 = new BigDecimal("116.312606");
BigDecimal b2 = new BigDecimal("39.981358");
// BigDecimal - double
double d1 = b1.doubleValue() ;
double d2 = b2.doubleValue();
// BigDecimal 转 String、int、Double、
BigDecimal b = new BigDecimal(12.10);
String c = b.toString() ; // 转 String
int c = b.intValue(); // 转 int
double c = b.doubleValue(); // 转 double
// 保留6位小数
NumberFormat format = NumberFormat.getInstance();
format.setMinimumFractionDigits(6);
String s= format.format(double/BigDecimal);
DecimalFormat df = new DecimalFormat("0.000000");
String ss= df.format(double/BigDecimal);
使用BigDecimal(double val)可能精度也会丢失,一般用BigDecimal(String val)
网友评论