在双变量点之后删除数字(Java)

问题描述 投票:0回答:1

我有一个双值,例如:

double a = 12.1212123456543234;

我需要检查点后的数字位数,并从第十六位删除所有数字。这是我的代码获取点后的数字:

String [] splitter  = String.valueOf(a).split("\\.");

但即使点数之后的数字大于15,我总是得到15位数,最后一位数(第十五位)被错误取代。请帮我。

java double
1个回答
2
投票

Double是64位浮点数。并且它的精度限制在该点之后的15-16位数,这就是为什么你得到不正确的结果。

如果想要使用那么大的数字,你可能需要BigDecimal

BigDecimal decimal = new BigDecimal("12.1212123456543234");

如果要将十进制数字舍入为N位数,可以这样做:

BigDecimal decimal = new BigDecimal("12.1212123456543234");
decimal = decimal.setScale(15, RoundingMode.CEILING);

你还应该看看RoundingModes来选择你需要的舍入。

© www.soinside.com 2019 - 2024. All rights reserved.