Excel中的舍入函数、工作表函数与VBA
我有一个应用程序,用于返回与大型值集群中的某些值最接近的匹配项(如前所述),我选择了VBA解决方案。在使用上述应用程序的过程中,我发现0.5的结果不正确。我一直在使用VBA Round函数,我发现该函数返回0表示0.5四舍五入为整数,而工作表Round函数返回1。奇怪的是,VBA round函数返回2表示1.5。我不得不用工作表函数代替VBA函数Excel中的舍入函数、工作表函数与VBA,vba,excel,excel-2007,worksheet-function,Vba,Excel,Excel 2007,Worksheet Function,我有一个应用程序,用于返回与大型值集群中的某些值最接近的匹配项(如前所述),我选择了VBA解决方案。在使用上述应用程序的过程中,我发现0.5的结果不正确。我一直在使用VBA Round函数,我发现该函数返回0表示0.5四舍五入为整数,而工作表Round函数返回1。奇怪的是,VBA round函数返回2表示1.5。我不得不用工作表函数代替VBA函数 我遗漏了什么吗?这是一个已知的问题。VBA Round()函数使用银行家舍入,而电子表格单元格函数使用算术舍入。请在此处查看详细信息: 微软提出的解
我遗漏了什么吗?这是一个已知的问题。VBA Round()函数使用银行家舍入,而电子表格单元格函数使用算术舍入。请在此处查看详细信息: 微软提出的解决方案是编写一个自定义函数来获得所需的结果
银行家四舍五入总是将0.5四舍五入到最接近的偶数,这是会计中的标准值,这就是Excel采用这种方式的原因。算术四舍五入将0.5四舍五入到下一个数字。请记住,VBA函数不是“不正确的”;正如兰斯在链接访问问题中指出的,这只是一种不同的取整方法。一个不正确的舍入示例是ColdFusion 6.1,我认为,除非在非常具体的情况下,它向上舍入了.5。您的最后一段是向后的:Excel不使用银行舍入,所以说这就是“Excel为什么这样工作”没有什么意义。如果说有什么区别的话,这只会加深Excel为何从银行家取整中脱颖而出的神秘性。@JohnColeman,最后一段是由Joel Spolsky(他在90年代是Excel团队的项目经理)添加的,所以我试着解释一下:“由于银行家四舍五入仅适用于会计,Excel首选具有更广泛适用性的算术四舍五入“.希望不要让事情变得更糟…有趣。由于他也是Stack Overflow的共同创始人,也是有史以来最好的编程博客之一的作者,我可以看到你在编辑它时的犹豫,尽管我怀疑他只是说错了。