簡體   English   中英

如何獲取Java中n位數字的最大十進制值?

[英]How can I get the max decimal value of n-digit number in Java?

在我們的代碼中,十進制數(以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嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM