Wednesday, September 26, 2007

Excel 2007重大bug:850×77.1=100000 (ZZ)

经本人确认:


Google Group里一个以微软Office Excel为主题的新闻组里有人报告说,Excel 2007里存在一个重大bug,会将850*77.1错误地计算为100000,而不是65535。

当然,850*77.1并不是一个特例,不信你可以在Excel 2007里计算下边这些乘法:

=5.1*12850
=10.2*6425
=20.4*3212.5
=40.8*1606.25
=154.2*425
=212.5*308.4
=308.4*212.5
=425*154.2

结果都是100000吧?

这个看起来有些不可思议的问题很快得到了多名专家的确认,Excel MVP Bernad Leingme更是第一个站了出来。

事实上,问题出现在65535这个数字上。虽然现在还没能最终肯定到底是什么原因,但考虑到65535这个数字的特殊性(转换成二进制就是 1111111111111111,16位无符号整数能表示的最大值),初步怀疑Excel 2007在浮点计算或者舍入误差方面出现了失误。另外还可以看出,出错的乘法公式中至少有一个数字带有一位小数。

更进一步地,如果把上述乘法之一放在A1单元格里,然后A1+1就会返回100001,A1*1返回100000,A1/1返回100000。这些 无疑都是错误的,因为Excel 2007已经把A1的值当成了100000,不过奇怪的是,A1*2返回的却是正确的131070,A1-1也是65534没错,A1/2也准确得到了 32767.5。Excel 2007如此反复无常的确令人难以琢磨。

测试还表明,Office 2000/XP/2003等旧版本都不存在这个bug,看来只是Office 2007的新“专利”了。

出现这么低级的bug,微软工作人员开发和审核的不严谨是很显然的,至少可以说是百密一疏,尤其是旧版产品反而没有问题,无疑会让微软更加尴尬。

http://news.mydrivers.com/1/91/91929.htm



Tuesday, September 25, 2007

网球鞋

今年六月买的网球鞋三周前已然鞋底见肉,不行了。经宝宝提醒,联系经销商询问质保期限。今日再度去电,被告知Adidias只有Barricade 和 Accelerator 有六个月的质保期,直接通过Adidias。 原来如此,设计上就用了定期早死的材料。下次看到两边有Michilen或者Goodyear的,得好好试试。

Monday, September 24, 2007

中秋又至

中秋来临之际,收到一堆礼物,还有一张支票。正好可以放入我参加茶公/茶母(韩国古装连续剧名)婚礼拿到的相框,做个长长久久的纪念。
祝大家团团圆圆,日子和和美美,人人心宽体胖,有情人都成眷属。
还有几个没结的?喂,那个谁,你四处看个啥呀,说的就是你呢。
还有你,还笑呢,没见这个生猪头,那个就要生猪尾么?你肚子怎么就还不大呢?
幸福的日子,还长着呢,大家好好享受吧。