参考http://blog.csdn.net/luweicheng24/article/details/77800688
import java.math.BigDecimal;
public class T {
public static void main(String[] args) {
String aaString="37.10";
System.err.println(Double.valueOf(aaString));
System.err.println(Float.valueOf(aaString));
float amount =37.10f;
float amount2 =amount*100;
float amount4 =amount*100f;
long amount3 =(long)amount2;
System.err.println(amount);
System.err.println(amount2);
System.err.println(amount3);
System.err.println(amount4);
//
BigDecimal bigDecimal1 = new BigDecimal(Float.toString(amount));
System.err.println(bigDecimal1);
BigDecimal bigDecimal2 = new BigDecimal(Float.toString(100));
System.err.println(bigDecimal2);
BigDecimal result = bigDecimal1.multiply(bigDecimal2);
System.err.println(result);
long longValue =result.longValue();
System.err.println(longValue);
}
}
37.1
37.1
37.1
3709.9998
3709
3709.9998
37.1
100.0
3710.00
3710
1、String 转 float不会丢失精度;
2、float乘法计算会丢失精度、
乘积总是在一个正确的结果左右偏0.0000**1,这是因为当两个float数值相乘时,底层采用转换成二进制来进行乘法的运算
3、采用BigDecimal 可以实现高精度运算