gpt4 book ai didi

excel - 在 Excel 中计算电力塔的困难

转载 作者:行者123 更新时间:2023-12-04 21:45:04 25 4
gpt4 key购买 nike

我似乎在让 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 是:

<表类=“s-表”><标题>什么已测试代码结果关联性 <正文>重击 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右关联

我们可以添加 在右联想阵营。

显然,右关联是此示例的主要方法,它排除了没有类似幂运算符的其他应用程序和语言(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 类型的最大值,根据 this1.79769313486231570x(10^308) (我的括号:))

结果:

enter image description here

关于excel - 在 Excel 中计算电力塔的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68208137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com