如何判断一个数字是1开头?

2013-01-14 17:19:15 +08:00
 m
例如变量值为:
1000
200
900000

我要判断1000时返回true
同样
1=true
10 = true
100=true

其他非1开头都为false

用什么算法可以判断?(除了转为string之外)
6254 次点击
所在节点    问与答
70 条回复
explon
2013-01-14 17:19:56 +08:00
截取第一字节啊
NemoAlex
2013-01-14 17:20:28 +08:00
不同语言的写法不同,楼主想要哪种
m
2013-01-14 17:21:08 +08:00
@explon 变量是个Integer,有没不转为string后再判断的数学方法
m
2013-01-14 17:21:57 +08:00
@NemoAlex 算法是一样的吧?我用的java,哪种语言都可以
itommy
2013-01-14 17:25:12 +08:00
%10 = 1 ?
m
2013-01-14 17:26:55 +08:00
@itommy 这个。。。100%10=0
m
2013-01-14 17:28:49 +08:00
我忘了说似乎是挺重要的一点
1111=false
12000=false
1230=false
101=false

也就是仅判断是否是1后面跟了0
clww
2013-01-14 17:29:16 +08:00
应该是除以10...
m
2013-01-14 17:31:23 +08:00
@clww 除10只是减一位的0而已,在值为10000的时候也得不到1啊
itommy
2013-01-14 17:33:18 +08:00
@m 记得有个能算出int长度的公式 然后除以就可以了 那个长度 等于 1就 true了

如果 是 2333 这样的就用 int(2333/1000)
NemoAlex
2013-01-14 17:34:30 +08:00
楼主完全没有描述清楚想要找什么...
bitsmix
2013-01-14 17:34:43 +08:00
/^10*$/.test(number)
clww
2013-01-14 17:35:18 +08:00
@m 回复时你补充上面的那条还没刷出来。。。
你的原需求一直不断除10就行了
miaoever
2013-01-14 17:35:41 +08:00
取每一位,然后加起来等于1?
yyai3
2013-01-14 17:35:50 +08:00
log
Sunyanzi
2013-01-14 17:37:53 +08:00
我其实挺想帮 LZ 以便换到某论坛的邀请码的 ... 但我不太理解需求 ...

(T) 1
(F) 2
(T) 10
(F) 11
(F) 99
(T) 100
(F) 101
(F) 150
(T) 1000
(F) 1001

如果是我上面描述的那样 ... 以 10 为底取对数也就是 lg ...

判断结果是否为整数即可 ...
alexrezit
2013-01-14 17:38:01 +08:00
bool Blah(int i)
{
if (i > 10) {
return Blah(i/10);
} else {
return i == 1;
}
}
forest520
2013-01-14 17:38:33 +08:00
for(; n % 10==0 && n > 1; n /= 10);
result = (n == 1);
alexrezit
2013-01-14 17:39:35 +08:00
@alexrezit
是 >= 10, 蛋疼的手机输入法...
alexrezit
2013-01-14 17:44:10 +08:00
@forest520
你提醒了我, 可以缩减一下:
Blah(int i){return i>9?Blah(i/10):i==1;}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/57554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX