在逗号后切割不同小数位的复杂函数

Complex function to cut a different decimal places after comma

程序的输入数据是 JSON,具有 BigDecimal 值,如本例所示:345.0197 我有 2 个问题:

  1. 有些字段必须在逗号后显示不同的位数:
  1. 逗号前的整数必须大于逗号后的小数。喜欢这张图片:

我需要 Java 或 Kotlin 中的函数,它可以 return 根据逗号(3、2 或 1)后所需的位数和该小数点与整数分隔的小数点进行切割,即我可以在最终结果中应用不同的布局样式。

最好的方法是什么?

也许是这样的?

var decimal_places = 3

val value = 745.49.toBigDecimal()

val part_a = value.toBigInteger()
val part_b = value.subtract(BigDecimal(part_a)).toString().drop(2).take(decimal_places)

或者更数学的方式:

    val part_a = value.toBigInteger()
    val part_b = (value.subtract(BigDecimal(part_a)).toDouble() * Math.pow(10.toDouble(), decimal_places.toDouble())).toInt()