为什么cos(2 ^ 27)失败了?

时间:2013-03-22 21:10:44

标签: excel

似乎excel知道如何计算=cos(2^27-1)但无法计算=cos(2^27)。返回#NUM!。有谁知道为什么?

2 个答案:

答案 0 :(得分:3)

我不知道Excel在内部使用什么类型的算术,但在某些时候,使用大量数字,执行mod 2*pi操作后的错误太大而无法产生可靠的答案。据推测,他们选择了2 ^ 27作为他们的截止值。

enter image description here

答案 1 :(得分:1)

这种行为不太好documented。 Sin函数文档指出参数是Double,文档中指定的限制表示double类型存储为64位数字,范围从4.94E-324到1.797E308(对于正数)。

我怀疑2 ^ 27(134,217,728)字节精确 128兆字节并非巧合,并且似乎某些触发功能存在内部限制(例如,COS,SIN和TAN,但有趣的是,不是TANH等。这并不是说需要大量的内存消耗 - 只是程序员的实现可能会对这些类型的输入内部产生一些(可能是不必要的)限制。

要解决这个愚蠢的限制,只需使用以下内容:

=COS(MOD(2^27, 2*PI()))

这是有效的,因为其他操作不存在限制,并且在Excel Specifications and Limits中无处可见。 :-)

对链接的文档提供这些限制的描述会很好,但不幸的是,它没有。