得到BigDecimal的指数

时间:2014-02-05 23:09:39

标签: java clojure bigdecimal

我想获得BigDecimal的指数。

`1M` (`1E0M`)      -> `0`
`10M` (`1E1M`)     -> `1`
`11M` (`1.1E1M`)   -> `1`
`1E2M`             -> `2`
`1.0E2M`           -> `2`
`100M` (`1.00E2M`) -> `2`

scale,至少本身并不是我需要的。我真的宁愿不必使用.toPlainString来破解那些东西。

我有点惊讶我想要的指数不是BigDecimal内部表示的一部分。

我正在使用Clojure中的BigDecimal,但任何适用于Java的逻辑都是受欢迎的。

1 个答案:

答案 0 :(得分:5)

(defn exp<-bigdec
  "Returns the exponent, b, from a BigDecimal in the form a * 10 ^ b."
  [x]
  (- (.precision x) (.scale x) 1))