【问题标题】:AWK: Getting +nan when calculating power of numberAWK:计算数字的幂时获得+nan
【发布时间】:2023-02-04 05:10:30
【问题描述】:

使用变量时的问题

echo ""| awk '{
x=-0.35
print x^1.35
print -0.35^1.35
}'

结果

+nan
-0.242377

使用 GNU awk

【问题讨论】:

  • 我得到 -nan 而不是 +nan
  • 问题是为什么 nan 而不是 -0.24,当替代 x 都有效时

标签: math awk floating-point nan


【解决方案1】:

输出是正确的.

幂运算符^ 的优先级高于否定运算符。因此,x^1.35(-0.35)^1.35(负数的非整数次幂是复数,解释为-nan),但-0.35^1.35-(0.35^1.35),一个正数的负数正幂。

【讨论】:

  • 使用 calc 检查 awk,现在意识到为什么我的 calc 显示 -0.35^(e/2)=-0.24,不是错误或复杂,只是因为功率高于负值...谢谢
  • @Ivan 请参阅我的上一篇文章。
【解决方案2】:

在大学里,我被要求用整个学期学习复杂的数学,这是这个问题的数学核心:

-0.35^1.35 =
-0.35^(135/100) =
-0.35^(27/20) =
((-0.35^27))^1/20) =
(-0.00000000000049)^1/20 =
0.242377253454738i (or "nan" if constrained to real #s)

-0.35^1.35 =
-0.35^(135/100) =
-0.35^(27/20) =
-0.35^(54/40) =
((-0.35^54))^1/40) =
(2.397035107846411e-25)^1/40 =
0.242377253454738

——所以,答案是有两个答案!你今天的新词是“复共轭”。

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2014-12-10
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多