r******j 发帖数: 92 | 1 int x = 2323;
int digits = 1;
while(x/(int)Math.pow(10,digits)>=1){
digits++;
}
想用这个方法求整数的位数。为什么这循环一直也结束不了呢。
x也是int,后面也强制转化成int了,结果应该是int吧,怎么就循环结束不了了呢。。。
很弱的问题。。。求指教。。。 |
c*****a 发帖数: 808 | 2 (int) Math.ceil(Math.log10(2323))? |
p****e 发帖数: 3548 | 3 我这里运行没问题
int x = 111112323;
int digits = 1;
while(x/(int)pow(10,digits)>=1){
digits++;
}
cout << digits << endl;
Output: 9 |
r******j 发帖数: 92 | 4 我也觉得很神奇。。。因为我记得我昨天的一道题用的同样的方法,可以的。。今天怎
么就不行了。。。。。。。。。
【在 p****e 的大作中提到】 : 我这里运行没问题 : int x = 111112323; : int digits = 1; : while(x/(int)pow(10,digits)>=1){ : digits++; : } : cout << digits << endl; : Output: 9
|
p*****p 发帖数: 379 | |
c********t 发帖数: 5706 | 6 为什么?
【在 p*****p 的大作中提到】 : >=1可能会溢出
|
r******j 发帖数: 92 | 7 我的方法用来数2147483647的位数就不可以,2147483646就可以。哪位知道为什么吗? |
l*******b 发帖数: 2586 | 8 overflow鸟...
【在 r******j 的大作中提到】 : 我的方法用来数2147483647的位数就不可以,2147483646就可以。哪位知道为什么吗?
|
r******j 发帖数: 92 | 9 可是2147483647不是java中int可以表示的最大的整数吗?没有overflow吧?
【在 l*******b 的大作中提到】 : overflow鸟...
|