如何提取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