首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中获取BigDecimal的整数和小数部分

如何在Java中获取BigDecimal的整数和小数部分
EN

Stack Overflow用户
提问于 2020-07-25 14:12:33
回答 2查看 89关注 0票数 2

对于像42.7这样的BigDecimal数字,我如何分解它以获得整数部分(42)和小数部分(0.7)?

我想将这两个都作为BigDecimal对象检索。但我会获取我能得到的东西,并从它们中创建BigDecimal对象。

EN

回答 2

Stack Overflow用户

发布于 2020-07-25 14:12:33

tl;dr

代码语言:javascript
运行
复制
myBigDecimal
.divideAndRemainder( BigDecimal.ONE )
[ 0 ]                                    // for integer part

…和…

代码语言:javascript
运行
复制
[ 1 ]                                    // for fraction part

BigDecimal::divideAndRemainder

BigDecimal类为此提供了一些方法。

BigDecimal::divideAndRemainder方法将原始数字除以另一个数字。结果是一个包含两个BigDecimal对象的数组,第一个是整数部分,第二个是小数部分。

为了实现你的目标,我们只需要除以1。BigDecimal类为1:BigDecimal.ONE的值提供了一个常量对象。

代码语言:javascript
运行
复制
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );

转储到控制台。

代码语言:javascript
运行
复制
System.out.println( Arrays.toString( parts ) );

42.0,0.7

从数组中抓取每一块。

代码语言:javascript
运行
复制
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
BigDecimal integerPart = parts[ 0 ] ;
BigDecimal fractionPart = parts[ 1 ] ;

如果你只需要一个部分:

  • myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 0 ]整数part
  • myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 1 ]小数部分

Addition把它们写成了together again

代码语言:javascript
运行
复制
BigDecimal humptyDumpty = integerPart.add( fractionPart ) ;
票数 2
EN

Stack Overflow用户

发布于 2020-07-25 15:07:20

setScale()

我想我会选择setScale()

代码语言:javascript
运行
复制
    BigDecimal bd = new BigDecimal("42.7");
    
    BigDecimal integerPart = bd.setScale(0, RoundingMode.DOWN);
    BigDecimal fractionalPart = bd.subtract(integerPart);
    
    System.out.println(integerPart);
    System.out.println(fractionalPart);

42 0.7

对我来说,阅读起来似乎很清楚。

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

https://stackoverflow.com/questions/63085009

复制
相关文章

相似问题

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