在 Excel 中计算电力塔的困难

2024-02-27

我似乎在让 Excel 正确计算电力塔时遇到一些麻烦。

如果我输入=0.001^0.002^0.003在单元格中,Excel 将答案输出为0.99995855而不是正确答案0.00113609.

据我所知,Excel正在解释a^b^c as (a^b)^c而不是正确的解释a^(b^c).

有没有办法解决这个问题,以便 Excel 能够正确处理此类情况?


This 博客文章 https://codeplea.com/exponentiation-associativity-options by 刘易斯·范·温克尔 https://github.com/codeplea(参考here https://en.wikipedia.org/wiki/Order_of_operations#Serial_exponentiation以及)给出了不同应用程序/语言如何处理左关联性与右关联性问题的有用细分;其中,对电力塔进行右关联处理是正确的方法。他的表是:

What Code Tested Result Associativity
Bash 2**2**3 256 right-associative
C++ a^b^c 64 left-associative
DuckDuckGo 2^2^3 256 right-associative
Excel 2^2^3 64 left-associative
EtherCalc 2^2^3 64 left-associative
Fortran 2**2**3 256 right-associative
Google 2^2^3 256 right-associative
Google Sheets 2^2^3 256 right-associative
Hand-held Calculators Varies
Lua 2^2^3 256 right-associative
Matlab 2^2^3 64 left-associative
Octave 2^2^3 64 left-associative
Perl 2**2**3 256 right-associative
PostgreSQL 2^2^3 64 left-associative
Python 2**2**3 256 right-associative
Ruby 2**2**3 256 right-associative
Tcl 2**2**3 256 right-associative
WolframAlpha 2^2^3 256 right-associative

我们可以添加r /questions/tagged/r在右联想阵营。

显然,右关联是此示例的主要方法,它排除了没有类似幂运算符的其他应用程序和语言(C#、SQL Server、Powershell 等)。我大胆猜测,由于向后兼容性问题,这个问题在 Excel(和其他)中并未“修复”。

这可能与这个问题无关(而且这超出了我的理解范围),但是 Math Exchange 上有一个人说左结合是解决问题的方法序数四联 https://math.stackexchange.com/q/2313576/341419(见评论)。

无论如何,我的答案是在 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

Where POWTOWR = CVErr(xlErrNum)处理结果大于 Double 类型的最大值,根据this https://superuser.com/questions/1041458/what-is-largest-value-number-that-i-can-store-in-an-excel-vba-variable is 1.79769313486231570x(10^308)(我的括号:))

Results:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Excel 中计算电力塔的困难 的相关文章

  • Excel VBA - 如何逐行读取csv文件而不是整个文件

    这是我需要读取的 csv 文件内容 header header header header header header value value value value value value value value value 我在网上找到
  • 标准 VBA 函数“找不到项目或库”

    因此 我必须在我的 PC 上运行别人的 Excel 应用程序 并且在标准函数 如日期 格式 十六进制 中间等 上收到 找不到项目或库 的信息 一些研究表明 如果我在这些函数前加上 VBA 前缀 如 VBA Date 中那样 它会正常工作 网
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • 根据单元格值向用户窗体添加复选框

    我对 VBA 很陌生 只有 3 天 但我发现它非常有用且易于使用 但现在我面临一个问题 我需要制作一个具有不同复选框的用户窗体 但我需要根据工作表某一列中使用的信息自动添加它们 我相信我可以使用 For Each Next 但我真的不知道如
  • 文件夹.文件的相对路径

    我有一个 Excel 文件 在同一文件夹中还有一个包含我想要包含的 CSV 文件的文件夹 使用 来自文件夹 查询 第一步将给出以下查询 Folder Files D OneDrive Documents Health Concept2 现在
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 在 Node.js 中解析 Json(带有数组和对象)并将数据导出到 Excel 文件中

    我是 Node js 新手 我的要求是 我需要解析 JSON 并将数据导出到 Excel 文件中 其中包含 JSON 中的所有字段 我的 JSON 如下 id 1255 title The Brain and Nervous System
  • SpreadsheetML 文件扩展名被 IE 和 FF 更改 - 内容类型错误?

    我正在 PHP 中生成 SpreadsheetML 文件 当用户下载文件并保存时 默认情况下文件会另存为 Report xml 并在 Excel 中打开 但是 如果选择在 Excel 中打开文件而不是保存文件 则文件名将更改为 Report
  • VBA中的字符串是可以迭代的数组吗?

    VBA中字符串是数组吗 例如 我可以像在 C C 中那样迭代它吗 做这样的事情 char myArray 10 for int i 0 i lt length i cout lt lt myArray i VBA 中的等价物是什么 它的行为
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • VBA 架构技巧 - 宏封装

    我拼凑了 Excel 的概念证明 以从数据库获取数据 并需要将其打包 以便可以将其分发给我们的客户 我的第一次尝试只是将所有代码放入代码模块中 但随后在 Excel 中我可以看到宏列表中的所有模块 而我实际上只想要列表中的主要模块 我猜想我
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • Excel - 在一列中查找重复项,然后将数量求和到另一列中?

    查找一列中的重复项 然后将数量求和到另一列中 https i stack imgur com AADjd png DATA RESULT A 1 A 11 A 1 B 7 A 9 C 5 B 2 D 4 B 2 E 8 B 3 C 5 D
  • VBA Excel:将范围值分配给新范围

    我在将一个工作簿范围中的值分配给当前工作簿中的某个范围时遇到问题 当我使用 Range A1 C1 分配我的范围时 此代码工作正常 但是当我使用 Range Cells 1 1 Cells 1 3 定义我的范围时 该函数会失败 Sub Co

随机推荐