java double 四舍五入_关于java double类型四舍五入的算法

展开全部

这是为什么呢?//double类型62616964757a686964616fe58685e5aeb931333337626131直接转换成为BigDecimal还是会造成精度丢失

解决方案//把double类型首先转换为String类型, 然后再把String类型转换成BigDecimal类型

实例代码import java.math.BigDecimal;

public class B {

public static void main(String[] args) {

print0();

print1();

print2();

print3();// 解决方案

}

private static void print0() {

double d = 12345.15;

BigDecimal b = new BigDecimal(d);

System.out.println(b);

double d1 = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println(d1);

}

private static void print1() {

double d = 1234.115;

BigDecimal b = new BigDecimal(d);

System.out.println(b);

double d1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println(d1);

}

private static void print2() {

double d = 2345.115;

BigDecimal b = new BigDecimal(d);

System.out.println(b);

double d1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println(d1);

}

private static void print3() {

double d = 2345.115;

BigDecimal b = new BigDecimal(String.valueOf(d));//方案一

//BigDecimal b = new BigDecimal("2345.115");//方案二

//BigDecimal b = new BigDecimal(""+d);//方案三

System.out.println(d);

double d1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println(d1);

}

}

输出12345.149999999999636202119290828704833984375

12345.1  //四舍五入 保留1位

1234.115000000000009094947017729282379150390625

1234.12  //四舍五入 保留2位

2345.114999999999781721271574497222900390625

2345.11   //四舍五入 保留2位

2345.115

2345.12   //四舍五入 保留2位

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值