- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎在让 Excel 正确计算电力塔时遇到一些麻烦。
如果我在单元格中输入 =0.001^0.002^0.003
,Excel 会将答案输出为 0.99995855
,而不是正确答案 0.00113609
.
据我所知,Excel 将 a^b^c
解释为 (a^b)^c
,而不是 a^ 的正确解释(b^c)
.
是否有办法解决此问题,以便 Excel 能够正确处理此类情况?
最佳答案
这个blog post通过 Lewis Van Winkle (也参见here)给出了不同应用程序/语言如何处理左右关联性问题的有用分割;其中,对电力塔进行右关联处理是正确的方法。他的 table 是:
2**2**3
256右关联C++
a^b^c
64左关联DuckDuckGo
2^2^3
256右关联Excel
2^2^3
64左关联以太计算
2^2^3
64左关联Fortran
2**2**3
256右关联谷歌
2^2^3
256右关联Google 表格
2^2^3
256右关联手持计算器因人而异Lua
2^2^3
256右关联Matlab
2^2^3
64左关联 Octave
2^2^3
64左关联Perl
2**2**3
256右关联PostgreSQL
2^2^3
64左关联Python
2**2**3
256右关联 ruby
2**2**3
256右关联TCL
2**2**3
256右关联WolframAlpha
2^2^3
256右关联
我们可以添加 r在右联想阵营。
显然,右关联是此示例的主要方法,它排除了没有类似幂运算符的其他应用程序和语言(C#、SQL Server、Powershell 等)。我大胆猜测,由于向后兼容性问题,这个问题在 Excel(和其他)中并未“修复”。
这可能与这个问题无关(而且这超出了我的理解范围),但是 Math Exchange 上有一个人说左结合是 ordinal tetration 的方法。 (见评论)。
无论如何,我的答案是在 VBA 中使用用户定义的函数,例如从一个范围:
Function POWTOWR(rng As Range) As Double
On Error GoTo ErrHandler
Dim var As Variant
Dim dbl As Double
Dim lng As Long
var = Application.Transpose(Application.Transpose(rng.Value))
dbl = 1
For lng = UBound(var) To LBound(var) Step -1
dbl = var(lng) ^ dbl
Next lng
POWTOWR = dbl
Exit Function
ErrHandler:
POWTOWR = CVErr(xlErrNum)
End Function
从数组中:
Function POWTOWA(ParamArray vals() As Variant) As Double
On Error GoTo ErrHandler
Dim dbl As Double
Dim lng As Long
Debug.Print TypeName(vals)
dbl = 1
For lng = UBound(vals) To LBound(vals) Step -1
dbl = vals(lng) ^ dbl
Next lng
POWTOWA = dbl
Exit Function
ErrHandler:
POWTOWA = CVErr(xlErrNum)
End Function
哪里POWTOWR = CVErr(xlErrNum)
处理结果大于 Double 类型的最大值,根据 this是 1.79769313486231570x(10^308)
(我的括号:))
结果:
关于excel - 在 Excel 中计算电力塔的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68208137/
这是我正在做的作业。我创建了 2 个类来玩汉诺塔。第一个基本上是运行实际游戏类的运行者。 import java.util.Scanner; class TowersRunner { publ
这是我为汉诺塔问题编写的 Python 代码,其中塔必须从左桩转移到中间桩,使用右桩作为备用: def hanoi(n, origin = "1", destination = "2", spare
我正在使用 jQuery 标签!库创建用户“技能”输入表单。我认为这将是一个非常快速和简单的设置,就像大多数 jQuery 库一样,但是我在这个方面遇到了很多麻烦。我尝试按照下面示例中的源代码进行操作
我如何(如果可能)使用 C++11 可变参数编程来定义一系列 vector是在一个函数体内,(或者换句话说,一系列 N 维数组,递减 N 直到 0),就像下面的变量一样? vector>> v; ve
我编写了一个 Ansible playbook,它需要运行它的作业编号作为其参数之一,以便我将对该作业的引用添加到我维护的数据库中。如何获取 Tower 模板以将其传递给剧本? 这是我当前的解决方案,
默认情况下,android 会存储最后 200 个 wifi 连接和 50 个单元位置详细信息。 我使用 WifiManager 中的 getConfiguredNetworks() 获得了 wifi
如何(如果可能)使用 c++11 可变参数编程来定义一系列 vector 's 在函数体中,(或者换句话说,N 维数组的序列,N 's 递减直到 0),就像下面的变量? vector>> v; vec
我们正在 Tensorflow 上运行多 GPU 作业,并评估从基于队列的模型(使用 string_input_producer 接口(interface))到新的 Tensorflow 数据集 AP
我有一个由另一个进程启动的 Ansible 作业。现在我需要检查 Ansible Tower 中当前正在运行的作业的状态。 我可以使用 REST API 使用 /jobs/{id} 跟踪状态是否正在运
我正在使用一个非常棒的插件,名为 jQuery Tagit在我当前项目的开发中。 一切都进行得很顺利(令人怀疑),直到我尝试添加自己的一小部分 jQuery。我的目标是让最终用户可以选择使用按钮添加标
我是一名优秀的程序员,十分优秀!