如何提取double / BigDecimal的小数位数

假设我们有一个双值12345.6789(应该是动态的)

现在,需求是对数字进行拆分并获得十进制数字和小数位数,它们将是:

double number = 12345.6789;

int decimal = 12345;

int fractional = 6789;

我得到了小数部分的结果,但是请您给出小数部分的提示?非常感谢。

回答:

double number = 12345.6789; // you have this

int decimal = (int) number; // you have 12345

double fractional = number - decimal // you have 0.6789

这里的问题是小数部分没有写为“

0.6789”在内存中,而是可以有一定的“偏移量”。例如0.6789可以存储为0.67889999291293929991

我认为您在这里主要关心的不是 小数部分,而是获得一定 的小数部分。

如果您想获取分配给它的确切值,则可能需要考虑一下(当然,这不是一个干净的解决方案):

String doubleAsText = "12345.6789";

double number = Double.parseDouble(doubleAsText);

int decimal = Integer.parseInt(doubleAsText.split("\.")[0]);

int fractional = Integer.parseInt(doubleAsText.split("\.")[1]);

但是,正如我所说,这不是最有效,最干净的解决方案。

以上是 如何提取double / BigDecimal的小数位数 的全部内容, 来源链接: utcz.com/qa/431287.html

回到顶部