gpt4 book ai didi

java - 提取 BigDecimal 的 int 部分?

转载 作者:行者123 更新时间:2023-12-03 22:48:44 26 4
gpt4 key购买 nike

在 Java 中,我正在使用 BigDecimal类和我的部分代码要求我从中提取 int 部分。 BigDecimal似乎没有任何内置方法可以帮助我获取 BigDecimal 的小数点前的数字.

例如:

BigDecimal bd = new BigDecimal("23452.4523434");

我想提取 23452从上面表示的数字。最好的方法是什么?

最佳答案

取决于你所说的“提取”是什么意思。提取结果的类型是什么?另一个 BigDecimal , BigInteger , int , long , String , 或者是其他东西?

这是它们的全部代码:

BigDecimal result1 = bd.setScale(0, RoundingMode.DOWN);
BigInteger result2 = bd.toBigInteger();
int result3 = bd.intValue(); // Overflow may occur
long result4 = bd.longValue(); // Overflow may occur
String result5 = bd.toBigInteger().toString();
String result6 = bd.setScale(0, RoundingMode.DOWN).toString();

NumberFormat fmt = new DecimalFormat("0");
fmt.setRoundingMode(RoundingMode.DOWN);
String result7 = fmt.format(bd);

四舍五入的解释:
  • RoundingMode.DOWN - 舍入模式为 向零舍入 .永远不要在 之前增加数字丢弃的部分 (即, 截断 )。请注意,此舍入模式永远不会增加计算值的大小。
  • toBigInteger() - 转换此 BigDecimalBigInteger .此转换类似于来自 double 的缩小原语转换。至 longsection 5.1.3 中所定义Java™ 语言规范:任何小数部分 BigDecimal 将被丢弃 .请注意,此转换可能会丢失有关 BigDecimal 精度的信息。值(value)。
  • intValue() / longValue() - 转换此 BigDecimalint/long .此转换类似于来自 double 的缩小原语转换。至 int/long如第 5.1.3 节中所定义Java™ 语言规范:任何小数部分 BigDecimal 将被丢弃 ,并且如果结果“BigInteger ”太大而无法放入 int ,仅返回低位 32/64 位。

  • 从描述中可以看出,所有 4 个都丢弃小数部分,即向零舍入,也就是截断值。

    关于java - 提取 BigDecimal 的 int 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40664795/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com