【问题标题】:How can I parse a string to BigDecimal without considering the leading zeros in java?如何在不考虑 java 中的前导零的情况下将字符串解析为 BigDecimal?
【发布时间】:2021-07-30 18:43:59
【问题描述】:

我收到的这个数字是字符串 000000000007500,我必须将它传递给 BigDecimal,不考虑左边的零,我尝试执行以下操作,但结果是 0.0,如果你能帮助我,请,非常感谢。

BigDecimal bigDecimal = BigDecimal.valueOf ((Double.valueOf (transNum.getAmount ()) / 100));

【问题讨论】:

  • new BigDecimal("000000000007500") 有什么问题?
  • 前导 0 无关紧要。 transNum.getAmount()的取值和数据类型是什么?
  • 一般专业提示:如果您从 String 转换为 BigDecimal,您真的不想涉及任何浮点类型(float/Float 或 @ 987654326@/Double) !因为这样会失去 BigDecimal 的很多好处(即,您首先会丢失精度,然后非常精确地存储丢失精度的数据)。

标签: java bigdecimal


【解决方案1】:

BigDecimal 将忽略 String 构造函数中的前导 0,因此 new BigDecimal("000000000007500") 将代表 7500。

如果你想在那之后除以 100,那么用BigDecimal

BigDecimal result = new BigDecimal(transNum.getAmount())
                         .divide(BigDecimal.valueOf(100), MathContext.UNLIMITED);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2021-11-11
    • 2013-08-16
    相关资源
    最近更新 更多