加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

有没有办法在java double中获得小数点后的位数?

发布时间:2020-12-15 05:22:10 所属栏目:Java 来源:网络整理
导读:我正在开发 Java / Groovy程序.我有一个双变量,它包含一个用户输入的数字.我真正想知道的是用户在小数点右侧键入了多少个数字.就像是: double num = 3.14num.getPlaces() == 2 当然,你不能用double来做这个,因为那是使用IEEE浮点数而且它都是近似值. 假设我
我正在开发 Java / Groovy程序.我有一个双变量,它包含一个用户输入的数字.我真正想知道的是用户在小数点右侧键入了多少个数字.就像是:

double num = 3.14
num.getPlaces() == 2

当然,你不能用double来做这个,因为那是使用IEEE浮点数而且它都是近似值.

假设我无法获取用户键入的字符串,但只能访问已存储的值的double,有没有办法可以通过BigDecimal擦除那个double,或者某些东西可以得到“真实”的数字小数位? (当双重显示在屏幕上时,它会正确,所以我认为有一种方法至少可以猜到吗?)

解决方法

不,你不能……因为用户可以输入许多不同的字符串,所有字符串都将被解析为相同的值.

“真实”数字几乎肯定比用户输入的数字小一些.例如,3.14存储为3.140000000000000124344978758017532527446746826171875.我认为您不想将其显示给用户.

为了使问题更清楚,您无法从double值告诉用户是否实际输入了:

3.14
3.140
3.140000
3.14000000000000012434

这四个字符串都会给你相同的值 – 这应该很明显你不可能回到用户键入的内容.

如果可能的话,更改解析代码并始终使用BigDecimal.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读