得到BigDecimal的指数

Dav*_* J. 3 java clojure bigdecimal

我想得到一个BigDecimal的指数.

`1M` (`1E0M`)      -> `0`
`10M` (`1E1M`)     -> `1`
`11M` (`1.1E1M`)   -> `1`
`1E2M`             -> `2`
`1.0E2M`           -> `2`
`100M` (`1.00E2M`) -> `2`
Run Code Online (Sandbox Code Playgroud)

scale至少就其本身而言,并非我所需要的.我真的宁愿不必使用.toPlainString和破解那些东西.

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

我正在使用来自Clojure的BigDecimal,但任何适用于Java的逻辑也是受欢迎的.

Dav*_* J. 5

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

  • 即Java中的`x.precision() - x.scale() - 1`; 这似乎适用于我尝试过的所有案例. (2认同)