以下是引用山菊花在2006-4-19 20:14:33的发言:关于9E+307
我知道9E+307是一个很大的数,但为什么要用它?为什么哪里都用它?总是不明白。
有朋友这样说。
你认识 Lookup 吗?
我认识 Lookup 是在一家叫良缘的婚姻介绍所。那天我也就为那事去了那家婚姻介绍所,呵,比我早的人还有,于是我就站在老L的身边静静地等着。
老L干咳一声,开始为第一位顾客服务了:你今年多大了?这位先生说话还有点脸红,轻轻说:29。
老L看芳名册了,不,是芳龄册,头也不抬,说:成了,姑娘也是29。
年轻人让开了,后面那位有点经理模样的中年人跨一步上前,刚想问点什么,老L又开腔了:你今年多大了?“经理”只得顺着回答:45。老L说,交钱吧,姑娘36。
老L眼睛往上瞄了瞄,话刚开头:“你今年……”又止住了,怪了,为何不说了?原来那人老L认识,你也认识,是大肚子大耳朵猪八戒,猪八戒像懂规矩似的自己报上了年龄:我今年3680岁,老L恢复了常态,说:如此,给你介绍的姑娘62岁。
这下,我也看出点门道来了:
Lookup(29,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=29
Lookup(45,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=36
Lookup(3680,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=62
Lookup 给你找的人一定不会比你大,同龄或者比你小的人中年龄最接近你的。
Lookup的档案中记载:如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于 lookup_value 的最大数值。
新来的是Match
不知为什么,第二天,Lookup 在良缘婚姻介绍所下岗了,新来的是Match,戴眼睛,说话文绉绉的。
无巧不成书,排在前面的还是那三位,我都认识。
Match 跟Lookup一样,也问,你今年多大了?那位还是回答,29。
Match胸有成竹,说,行,给你介绍7号姑娘。先生满心欢喜离开了。
第二位得到的回答是,行,给你介绍10号姑娘。
轮到猪八戒了,听说猪八戒当书记了,这猪书记早清楚,62岁的是高翠花,60岁的是梦中情人嫦娥,他费尽嘴舌,要Match给他换一个,Match就是不同意,说,这是原则。
打开Match的记录本,你看看:
Match(29,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=7
Match(45,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=10
Match(3680,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=14
9E+307是什么概念?
9E+307是科学记数,用普通记数法写是9后面有307个0,长长的……宋丹丹说了,那是相当的长啊。
如果你到这个年龄,还是到良缘婚姻介绍所找老L和小M,还是那本芳龄册,你说,他们给你介绍谁啊?
想找个18的?没门!
言归正传
你会说,这些我懂,不必费这么大劲,我就是想问个明白,为什么用9E+307?
你再返回上面,看看版主为我们写的公式,反正,在构思解题思路时,就有,把那串文本从第一个数字开始,依次取1位、2位、3位、4位……,总共有多长,最后就取多少位。
有一部分,它的结果不是数(这个处理办法你自己看明白),取出的结果是数值的,一定有一个是最大的,它一定排列在最后面(多举些例子,看看是不是这样),我们要取的就是最后面那个数。
为了娶到最后面那位,你就得把年龄往最大里吹,吹!
多少合适?9E+307。
=LOOKUP(562,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})
=LOOKUP(1000,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})
=LOOKUP(9E+307,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})
前面也一样返回562,为保险起见,我们用9E+307查找,为了返回数组中最大的值。
注:Lookup、Match都还有第三个参数,这个参数可以改变它的查找方式,如果你还不知道,一定要弄个明白,不要把责任推给山菊花,谢了。