为什么 double 转 float 不会出现数据误差,而 float 转 double 却误差如此之大?
double d = 3.14;
float f = (float)d;
System.out.println(f);
输出结果是:3.14;
float f = 127.1f;
double d = f;
System.out.println(d);
输出结果是:127.0999984741211
为什么结果会是这样呢?
如何避免这样的问题发生,让 float
转 double
能得到实际的数据?
解决办法:先将 float
型转换为字符串型,再转换为精度更高的 BigDecimal
型,再将其转换为 double
型。
float f = 127.1f;
BigDecimal b = new BigDecimal(String.valueOf(f));
double d = b.doubleValue();
System.out.println(d);
/**
* 提供精確的加法運算
* @param args
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal