问个BigDecimal转String 的问题

卡卡的喵 2015-09-28 10:08:05
System.out.println(new BigDecimal(0.18).toString());
打印出的结果竟然是“0.179999999999999993338661852249060757458209991455078125”
有什么办法把BigDecimal转成String ?
网上有BigDeciaml保留2位小数四舍五入的办法,但这个不符合我的业务需求。
...全文
1277 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
番茄鲨鱼面 2015-09-30
  • 打赏
  • 举报
回复
引用 3 楼 xiakepan 的回复:
这么试试看满足要求么:

System.out.println(bd.doubleValue());
漏了点,这个bd就是BigDecimal.

BigDecimal bd = new BigDecimal(0.18);
//		System.out.println(bd.toString());
System.out.println(bd.doubleValue()+"");
  • 打赏
  • 举报
回复
根本原因是new BigDecimal(0.18) 这个0.18是double型,不能精确表示0.18这个小数,用new BigDecimal("0.18")即可
番茄鲨鱼面 2015-09-30
  • 打赏
  • 举报
回复
这么试试看满足要求么:

System.out.println(bd.doubleValue());
qq_20062767 2015-09-29
  • 打赏
  • 举报
回复
String str = Float.toString(new BigDecimal(0.18).floatValue() ) 1.将此 BigDecimal 转换为 float。 2.返回 float 参数的字符串表示形式,Float类的一个静态方法static String toString(float f)
开拓者Amadues 2015-09-29
  • 打赏
  • 举报
回复
你用String初始化Decimal,这样是精确的小数。 System.out.println(new BigDecimal(“0.18”);

67,547

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧