为什么 ZeroBrane studio 在幂为双精度时会将“^”评估为非数字
2016-10-12 16:3:47
收藏:0
阅读:90
评论:1
正如通常所说的那样,我有以下情况。我写了一个“main.lua”文件,其中包含具有以下方法的对象定义的其他文件:
function self:Process(vRef,vOut,bNeg)
mErrO = mErrN
mErrN = (bNeg and (vOut-vRef) or (vRef-vOut)) -- 刷新错误状态
logStatus(nil,"MER= "..mErrO.." > "..mErrN)
local errS = getSign(mErrN)
-- P项
logStatus(nil,"S P: >> "..tostring(errS))
local errP = mErrN; logStatus(nil,"0 P: >> "..tostring(errP))
errP = errP^mpP; logStatus(nil,"1 P: >> "..tostring(errP))
errP = math.abs(errP); logStatus(nil,"2 P: >> "..tostring(errP))
errP = errP*errS; logStatus(nil,"3 P: >> "..tostring(errP))
正如大家所看到的,如果我们有像 (-198^1.01) 这样的情况,结果必须是 (-208.75257542111)。我在“main.lua”文件中添加了以下行:
local a = (-198^1.01)
local b = ( 198^1.01)
local c = ( 0^1.01)
logStatus(nil,"-------------Pow: {"..a..","..b..","..c.."}")
然而,这些被正确计算了。我认为这与对象以及 ZeroBrane 可能使用较旧版本的 Lua 有关。奇怪的是,当幂参数为 1,2,3,4… 时,它可以正常工作。程序输出如下:
-------------Pow: {-208.75257542111,208.75257542111,0}
MER= 0 > -198
S P: >> -1
0 P: >> -198
1 P: >> nan
2 P: >> nan
3 P: >> nan
任何答案都将不胜感激!
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在你的第一段代码中
local errP = mErrN; --> -198 errP = errP^mpP; --> nan计算的表达式是
(-198)^1.01。根据 指数函数的数学定义 和
pow()的 man page,应该返回nan:在你的第二段代码中
local a = (-198^1.01)这个表达式应该是
-(198^1.01),根据 Lua 操作符优先级。这个表达式的值等于 -208.75...
也许你想计算
math.abs(x)^y * (x<0 and -1 or 1)而不是x^y。