似乎excel知道如何计算=cos(2^27-1)
但无法计算=cos(2^27)
。那返回#NUM!
。有谁知道为什么?
问问题
754 次
2 回答
3
我不知道 Excel 在内部使用哪种算术,但在某些时候,如果数字很大,执行mod 2*pi
操作后的错误太大而无法产生可靠的答案。大概他们选择了 2^27 作为他们的截止点。
于 2013-03-22T21:30:17.083 回答
1
这是没有很好记录的行为。Sin Function 文档表明参数是 Double,并且文档中指定的限制表明 double 类型存储为 64 位数字,范围从 4.94E-324 到 1.797E308(对于正数)。
我怀疑 2^27 (134,217,728) 字节恰好是128 兆字节并非巧合,而且似乎某些三角函数(例如 COS、SIN 和 TAN)存在内部限制,但有趣的是,不适用于 TANH, ETC。)。这并不是说需要这么多的内存消耗——只是程序员的实现可能在内部对这些类型的输入有一些(可能是不必要的)限制。
要绕过这个愚蠢的限制,只需使用以下命令:
=COS(MOD(2^27, 2*PI()))
这是有效的,因为其他操作不存在限制,并且在Excel Specifications and Limits中无处可见。:-)
如果链接的文档提供了这些限制的描述,那将是一件好事,但不幸的是,事实并非如此。
于 2013-03-22T21:48:05.930 回答