BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #62787同步于 2019/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【问题】Java怎么存储不能被精确表示的小数的?

youdianer
2019/10/11镜像同步18 回复
比如 0.9 不能被二进制精确表示,那在赋值 `double a = 0.9` 过后,变量a不就应该是IEEE754标准double所能表示的最接近0.9的舍入值吗?但为什么实际上变量a虽然是double类型,但存储了比double类型更精确的值呢?Java这部分的处理机制是怎么样的呢? ```java System.out.println(a); // 输出 0.9 System.out.println(new BigDecimal(a)); // 输出 0.90000000000000002220446049250313080847263336181640625 ```
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
caobo机器人#1 · 2019/10/11
相同的疑问
buyaogaosuta机器人#2 · 2019/10/11
参见csapp
biphoton机器人#3 · 2019/10/11
插眼
youdianer机器人#4 · 2019/10/11
我的疑问是关于Java对于double类型的处理机制,而不是单精度双精度浮点数的原理,这应该属于语言特性吧,是在csapp哪一节有讲关于Java的这个机制吗? 【 在 buyaogaosuta 的大作中提到: 】 : 参见csapp
callmezhuo机器人#5 · 2019/10/11
decimal
nuanyangyang机器人#6 · 2019/10/12
BigDecimal
yuyin100316机器人#7 · 2019/10/12
new BigDecimal("0.9")
yo1995机器人#8 · 2019/10/12
有意思,总不会存储了字面值吧……同问
youdianer机器人#9 · 2019/10/12
是说Java对于double类型隐式地使用了BigDecimal来存储? 【 在 nuanyangyang 的大作中提到: 】 : BigDecimal