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

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

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

其他非1开头都为false

用什么算法可以判断?(除了转为string之外)
6467 次点击
所在节点    问与答
70 条回复
alexrezit
2013-01-14 17:45:29 +08:00
@alexrezit
bool 又没复制上... orz
m
2013-01-14 17:53:38 +08:00
@Sunyanzi 你说的没错,但我没看明白解决方法,写个代码看下?是否能比循环/10好些?
m
2013-01-14 17:55:07 +08:00
@itommy 你说的没错,算出数字长度(位数)的公式是什么?
Air_Mu
2013-01-14 18:06:08 +08:00
不懂程序
大概是循环判断此变量是否大于10
如果大于10就除以10 直到其小于10. 返回此时的值。(设为x)

如果100<=x*100<=110就返回真。



比如1024 得出x为1.024 真 咳咳
Air_Mu
2013-01-14 18:07:01 +08:00
修正下 应该是如果大于10就除以10 直到其小于等于10
Air_Mu
2013-01-14 18:07:38 +08:00
再修:
如果100<=x*100<110就返回真
blacktulip
2013-01-14 18:10:47 +08:00
。。。。。。

def one_zero?(number)
return true if Math.log10(number) % 1 == 0
return false
end

p one_zero?(1000) # => true
p one_zero?(2000) # => false
p one_zero?(1200) # => false
m
2013-01-14 18:16:34 +08:00
@bitsmix 看不明白这个公式,能解释下吗?
reusFork
2013-01-14 18:17:30 +08:00
def starts_with_digit_1(n):
return n / (10 ** (math.log10(n))) == 1
blacktulip
2013-01-14 18:18:37 +08:00
@m 那不是公式,是正则匹配
dadastan
2013-01-14 18:23:16 +08:00
s/10*/
alexrezit
2013-01-14 18:33:44 +08:00
@m
我的方法不行么? 不需要库的支持, 我不太清楚 Java 能否计算 log.
Sunyanzi
2013-01-14 18:36:33 +08:00
@Air_Mu

<?php
var_dump( check( 1 ) );
var_dump( check( 10 ) );
var_dump( check( 11 ) );


function check( $number ) {

$checker = log10( $number );

return ( $checker == intval( $checker ) );

}

// 这样可以么 ..? 不可以的话我想办法写一个 Java 版本的恩 ...
Sunyanzi
2013-01-14 18:37:09 +08:00
我我 ... 我 @ 错人了 ... 是 @ LZ 来着 ...
Air_Mu
2013-01-14 18:39:23 +08:00
面红耳赤.....完全忘记对数是什么了...去wiki了下看了半天居然还没理解。
初中的时候明明觉得很简单的.....
tioover
2013-01-14 18:39:59 +08:00
转成科学计数法以后再判断……
blacktulip
2013-01-14 18:46:09 +08:00
@Air_Mu 比方说 十的五次方是一万, 那么 一万的以十为底的对数就是五 ,一种记数方法而已。
blacktulip
2013-01-14 18:48:59 +08:00
@Air_Mu 哈哈,脑子糊涂了,十的五次方是十万才对,不好意思,不过对数就那个意思
Air_Mu
2013-01-14 18:51:57 +08:00
@blacktulip 哎 惭愧...中学时期数学一直挺好的。大学后荒置后完全忘记了.
CoX
2013-01-14 18:52:43 +08:00
来个python的吧
n = str(n)
n[:1]=="1" and int(n[1:] + "0")==0

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

https://tanronggui.xyz/t/57554

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

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

© 2021 V2EX