double类型四舍五入问题
来源:互联网 发布:android sdk mac 下载 编辑:程序博客网 时间:2024/06/03 18:09
在开发中,对double类型数字四舍五入时,写了一个方法,如下
/**
* 设置double数字格式
* @param val
* @param newScale
* @return
*/
public double doubleDeal(double val){
double number = 0.00;
DecimalFormat df = new DecimalFormat("#.00");
number = Double.parseDouble(df.format(val));
return number;
}
/**
* 设置是数字类型的字符串格式
* @param val
* @param newScale
* @return
*/
public double doubleDeal(String val){
double number = 0.00;
if (val == null || "".equals(val)) {
val = "0";
}
try{
number = Double.parseDouble(val);
}catch (Exception ex) {
val = "0";
}
DecimalFormat df = new DecimalFormat("#.00");
number = Double.parseDouble(df.format(number));
return number;
}
但是程序运行时,发现对与四舍五入会出现问题如下
public static void main(String[] args){
new WorkloadReviewCheck().doubleDeal(-4.684);
new WorkloadReviewCheck().doubleDeal(-4.674);
new WorkloadReviewCheck().doubleDeal(-4.685);//
new WorkloadReviewCheck().doubleDeal(-4.675);
new WorkloadReviewCheck().doubleDeal(-4.686);
new WorkloadReviewCheck().doubleDeal(-4.676);
new WorkloadReviewCheck().doubleDeal(-4.655);
new WorkloadReviewCheck().doubleDeal(-4.645);//
}
会出现如果第二位为偶数第三位为5则五舍六入的问题。
经过查询资料发现
DecimalFormat df = new DecimalFormat("#.00");
java默认的格式是HALF_EVEN 根据如果第二位为偶数第三位为5则五舍六入
对这个方法该进
/**
* 设置double数字格式
* @param val
* @param newScale
* @return
*/
public double doubleDeal(double val){
double number = 0.00;
DecimalFormat df = new DecimalFormat("#.00");
//java默认的格式是HALF_EVEN 根据如果第二位为偶数第三位为5则五舍六入
df.setRoundingMode(RoundingMode.HALF_UP);
number = Double.parseDouble(df.format(val));
return number;
}
可实现四舍五入
- double类型四舍五入问题
- Java中Double类型的四舍五入
- java double类型保留小数和四舍五入
- C/C++中的double类型四舍五入
- Java的四舍五入问题(double等)
- double类型赋值问题
- double类型显示问题
- double类型数字小数点后保留2位,四舍五入
- PowerBuilder学习(二) 实现Double类型的四舍五入取整
- Java将double类型的四舍五入到两小数
- 如何把double类型四舍五入到小数后两位
- double类型如何四舍五入到int或者小数点某一位
- java中如何对Double类型进行四舍五入操作
- 格式化double类型的数据,保留两位,四舍五入
- java double类型数据保留小数点四舍五入功能
- Android double类型保留到小数点两位,四舍五入
- double类型转换int整型四舍五入简单方法
- float,double类型用BigDecimal.ROUND_HALF_UP 四舍五入失败简析
- Dubbo配置含义
- statement和preparedstatement的区别
- C++ 编程出错的地方(考试选择题易错点)
- Sass基础--入门
- Starting the Hive Metastore in CDH
- double类型四舍五入问题
- CAN波特率配置
- An Introduction to Flask 1~7
- POJ1113:Wall(凸包)
- hive 2.1.1 安装记录
- There is no getter for property named 'pid' in 'class java.lang.Long'
- 软件测试[(美)Ron Patton]第4章
- 新版本的全志R16平台的tinav2.1的系统打开softAP(分色排版)
- 看QT License了解 License协议