以下是引用sylun在2007-2-7 13:22:00的发言:反复学习老大的代码,有一个现象百思不得其解:对金额的分位数字求解结果有时会出现异常。曾从0.01至10.00按1分递增逐个转换,这1000个数中有58个出现异常,除知道其值均比原数小1和分位数字为0时不会出现偏差这两点外,似乎难以找出其他规律性来。两位以上的数只作简单测试,也发现有此现象,但似乎出现机率明显变小。从域公式来看,找不到可疑之处,而从分步显示来看,问题出在分位,且在转换为大写数字之前就出现异常,确切是在使用INT函数后(见下表)。难道这个函数不可靠?还是我的电脑有问题?如果求fen值不用INT函数取整而直接用简单公式进行计算,前面58个异常均消失,但这可靠吗?如果从公式的严密性来看,似乎用INT函数比简单公式要强,但从差错率来看,后者似乎强些。真不知如何解释。 测试环境:WinXP sp2 Word2003 sp2。 sylun兄,知音也。 两年前,当我还在着手写《Word专家200问》(相当于《WORD非常接触》的前身)时,曾与sailorgg兄说及此INT的BUG,包括我在写《Word非常接触》时,同样也有此问题,后来我记得向MS反映过此问题,但我记不得是否有回复了。 今日sylun兄旧事重提,我还是以我的想法做了一个,请sylun兄测试: { =int(jinE*100-yuan*100-jiao*10) } { =int({ =jine }*100-{ =yuan }*100-{ =jiao }*10) } { =int({ =jine*100 }-{ =yuan*100 }-{ =jiao*10 }) } { =int({ =jinE*100-yuan*100-jiao*10 }) } 前两个均为8,后两个的结果为9,当然第四个相对简单。 这让我想到了邮件合并,从EXCEL数据源中的数据写入WORD时,也会发生的数据错误,为保留原数据格式,我们使用了{=邮件合并域}这样的域代码方式,我觉得有异曲同工之处,大道理我说不上来。 |