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

看来excel知道如何计算=cos(2^27-1)但是不能计算=cos(2^27) 。 返回#NUM! 。 有谁知道为什么?

我不知道Excel在内部使用什么types的算术,但是在某些情况下,在大量的情况下,在执行mod 2*pi操作之后的错误太大而不能产生可靠的答案。 他们推测他们select了2 ^ 27作为截止date。

在这里输入图像描述

这是行为没有很好的logging 。 Sin函数文档指出参数为Double,并且文档中指定的限制表示doubletypes存储为从4.94E-324到1.797E308(对于正数)的64位数字。

我怀疑2 ^ 27(134,217,728)字节恰好是128兆字节并不是巧合,似乎有一些内部的限制(例如COS,SIN和TAN,但有趣的是,对于TANH,等等。)。 这并不是说这个内存消耗量是需要的 – 只是程序员的实现可能会在内部对这些types的input有一些(可能是不必要的)限制。

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

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

这是有效的,因为其他操作不存在此限制,无法在Excel规范和限制中看到。 🙂

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