如何在Java中获得n位数的最大十进制值

  • 本文关键字:十进制 Java java math
  • 更新时间 :
  • 英文 :


在我们的代码中,我们有一个十进制数(如基数10)中允许的最大位数(例如8如何使用此数字查看可能的值是否在该范围内(099,999,999

如果我们使用二进制数字,我会做一些类似的事情:

value < 1<<(MAX + 1)

当然,这对十进制不起作用。我还考虑了一些类似的东西:

Long.toString(value).length() < MAX

但这似乎太沉重了。

if (value >= 0 && value < Math.pow(10, MAX))

使用对数基数10获取基数为10的中的位数

if ((int)(Math.log10(value) + 1) <= MAX) {
    ...
}

如果你没有访问log10的权限,你可以使用正常的日志来做这件事:

int length = (int)(Math.log(value) / Math.log(10)) + 1;
if (length <= MAX) {
    ...
}

请注意,这也适用于任何基数,因此使用上面的第二种方法,您可以将10替换为任何基数,并且您在给定的基数中具有该数字的长度

你可以取10的(n)次方;

  value < (Math.pow (10, num_digits))

…用于正整数fixnums;如果你更关心幅度而不是符号,也许可以使用绝对值:

  Math.abs(value) < (Math.pow (10, num_digits))

当然,这不适用于浮点或BigDecimal值,但同样的(类似地,使用方法调用)适用于使用BigInteger的任意大的bignum。

这样行吗?val>=0 && (value/1000000000)==0

最新更新