关于java中float运算的精度问题
来源:互联网 发布:矩阵的基础解系唯一吗 编辑:程序博客网 时间:2024/05/16 01:46
今天在做一个float减法的时候出了点问题,找了半天,原来是关于flloat精度的问题
问题描述如下:
public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
flaot less = m-c;
System.out.println(m);
System.out.println(c);
System.out.println(less);
return less;
}
加入m=4.4 c=3.0 或许结果会得出0.399999,可能结果不是这个,记得不太清楚了,但会丢失精度,解决方法如下
public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
BigDecimal b1 = new BigDecimal(Float.toString(m));
BigDecimal b2 = new BigDecimal(Float.toString(c));
System.out.println(m);
System.out.println(c);
Float less = b1.subtract(b2).floatValue();
System.out.println(less);
return less;
}
这样就不会丢失什么精度问题了,^_^ 问题解决
- 关于java中float运算的精度问题
- java中float,double的精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于 java 中 Double 类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题
- 关于java中Double类型的运算精度问题(转)
- 关于java中Double类型的运算精度问题
- 维护单一原始码
- Windows表头文件类型
- Microsoft Visual Studio 2005 Team Suite 工作组简体中文版
- 第2篇文章
- sprintf-vsprintf
- 关于java中float运算的精度问题
- const 用法及常见错误
- WIN32下线程和窗口的数据绑定
- 终点就是起点
- JDK源代码分析聚集篇-------HashMap(一队不够快,多排几队就是)
- javascript读取xml文件
- 有时这些新的数据型态只是为了方便缩写
- 匈牙利表示法-常用
- Visual C++ TLS 的规则和限制