首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Java中的双位中获取十进制数?(Ex: 2.34 => 2,2.340 => 2,0.921 => 3)

问如何从Java中的双位中获取十进制数?(Ex: 2.34 => 2,2.340 => 2,0.921 => 3)
EN

Stack Overflow用户
提问于 2014-09-10 19:38:12
回答 6查看 11.4K关注 0票数 2

标题是不言而喻的。有什么好方法,最好是数学,从Java双变量中获取数字?

代码语言:javascript
复制
123 => 0
1.12 => 2
1.0001 => 4
2.340000 => 2
0.10 => 1

例如,我有一个双d= 0.320。

据我所知,对于编译器/ jvm /计算机:

代码语言:javascript
复制
System.out.println(0.0100000 == 0.01); // prints true...
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-09-10 19:40:37

这应该可以得到12月之后的金额:

代码语言:javascript
复制
 Double d = 123.9343;
 String[] div = d.toString().split("\\.");
 div[0].length();   // Before Decimal Count
 div[1].length();   // After  Decimal Count   

解释性:您首先将double转换为字符串,并使用split函数将字符串从.拆分

一旦它分成2部分,您就可以使用length函数轻松地找到字符串的长度。

票数 5
EN

Stack Overflow用户

发布于 2014-09-10 20:18:09

简短版本:使用BigDecimal和它的scale()方法。请随意初始化。

长篇版本:

您特别提到,您更喜欢以前的解决方案。

  • “只有数学”(模棱两可,但我能猜出你的意思)
  • 从double中获取数字数,大概是小数部分(根据您的预期输出)

这里有一个使用java.math.BigDecimal的解决方案:

代码语言:javascript
复制
List<BigDecimal> list = new ArrayList<BigDecimal>() {{
    add(BigDecimal.valueOf(0.0000000018));
    add(BigDecimal.valueOf(123));
    add(BigDecimal.valueOf(1.12));
    add(BigDecimal.valueOf(1.0001));
    add(BigDecimal.valueOf(2.340000));
    add(BigDecimal.valueOf(0.10));
}};

for (BigDecimal bd : list) { 
    System.out.println(bd + " --> " + bd.scale());
}

产出:

代码语言:javascript
复制
1.8E-9 --> 10
123 --> 0
1.12 --> 2
1.0001 --> 4
2.34 --> 2
0.1 --> 1

注意,像这样从BigDecimal实例化double最终会给出令人惊讶的结果。以scale() of BigDecimal.valueOf(0.1 + 0.1 + 0.1)为例,即17。这是因为0.1 (以及范围内的大多数其他97%的数字)不能精确地用double表示,这会在计算中引入舍入误差。

还请注意,使用scale()函数时,涉及操作toString()结果的解决方案将失败。Double.toString()定义得很好,可以产生超出double的“十进制表示法”的输出范围。

票数 9
EN

Stack Overflow用户

发布于 2014-09-11 01:18:11

没有与您所提供的结果相一致的“Java double的数字数”的有用概念。double是二进制浮点数,而不是十进制浮点数,例如,Java double 1.12实际上是数字1.12000000000000010658141036401502788066864013671875,它在小数点之后有50位数,在所有重复零之前。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25773721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档