[英]How can I get the max decimal value of n-digit number in Java?
在我們的代碼中,十進制數(以10為基數)具有允許的最大位數(例如8
)。 如何使用該數字查看可能的值是否在該范圍內( 0
到99,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.