java - Java中如何获取BigInteger的精度

标签 java biginteger bigdecimal

我正在我的 Web 应用程序中实现一个自定义 validator ,它可以验证 bean 的 BigInteger 属性。此属性映射到 Oracle 表的 Number(8, 0) 类型。

BigDecimal 一样,我没有看到可以返回给定数字精度的 BigInteger 方法。

基本上,我首先将 BigInteger 值转换为 BigDecimal 以获得其精度,如下所示(仅用于演示)。

int minPrecision=1;
int maxPrecision=8;

BigInteger bigInteger=new BigInteger("12345");
BigDecimal bigDecimal=new BigDecimal(bigInteger, 0);

int precision=bigDecimal.precision();
boolean isValid=precision>=minPrecision && precision<=maxPrecision;

System.out.println(isValid+" : "+precision);

BigInteger 是否提供了返回其值精度的精确方法?

最佳答案

BigInteger 上没有精度方法,因为精度的概念对于 Integer 来说没有意义。 BigInteger 表示任意大小的整数,与 BigDecimal 不同,后者表示 float 的精确十进制表示形式,因此具有关联的精度。

关于java - Java中如何获取BigInteger的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15677518/

相关文章:

java - Apache 点燃 : StripedExecutor queue and backup performance

c++ - 如何存储非常大的斐波那契数的输出?

java - HTTP 状态 500 - 空

java - 如何从我的应用程序将小部件添加到 Android 主屏幕?

java - 如何使用java计算极大指数数的余数?

java - BigInteger 占用大量内存

java - 优化 BigDecimal 数四舍五入的代码

java - 使用 BigDecimal 的乘法不准确

java - 当我将 78.9 插入 Mysql(使用 JDBC)时,它会四舍五入为 79 吗?这是正常的吗

java - MockMvc、RestAssured 和 TestRestTemplate 有什么区别?