【问题标题】:How to check if a number has a decimal place/is a whole number? [closed]如何检查数字是否有小数位/是否为整数? [关闭]
【发布时间】:2021-04-28 17:50:20
【问题描述】:

我的输入字段BigDecimal num 可能包含整数和浮点数。

num = 45
or 
num = 45.5343434

如果BigDecimal 输入字段num 包含小数位,那么我想将小数位限制为4。

Desired Output : 45.5343 if input num = 45.5343434
Desired Output : 45 if input num=45

我该怎么做?

【问题讨论】:

  • 你的例子中num的数据类型到底是什么?
  • 我假设您的输入字段产生一个包含数字的字符串?然后你可以使用Double d = Double.parseDouble(String) 将String 转换为Double。然后删除不需要的小数位 d = Math.round(d * 10000) / 10000.0
  • 您的问题是什么?检查数字是否为小数/整数或限制小数点后尾随数字的数量?
  • @user15350142 一定要使用 BigDecimal 吗?
  • “输出”到底是什么意思?

标签: java java-8 floating-point decimal


【解决方案1】:

您对BigDecimal比例感兴趣。

致电BigDecimal#scale

BigDecimal x = new BigDecimal( "45.5343434" );
BigDecimal y = new BigDecimal( "45" );

x.scale(): 7

y.scale(): 0

你问:

我想将小数位数限制为 4

测试规模是否大于四。如果是这样,round

    BigDecimal num = new BigDecimal(45);
    if (num.scale() > 4) {
        num = num.setScale(4, RoundingMode.HALF_UP);
    }
    System.out.println(num);

输出:

45

如果有更多小数:

    BigDecimal num = new BigDecimal("45.5343434");

45.5343

您可以选择不同的舍入模式以满足您的要求。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多