NodeMCU Lua 整数最大值为 2^31
NodeMCU Lua integer max value is 2^31
Lua SDK 3.0.1-dev(fce080e) 上的 5.1.4
尝试使用 node.dsleepMax() 并返回一个非常小的数字 (147324921)。然后我尝试手动将 node.dsleep 中的睡眠时间设置为 32 位最大值 (4294967295),它只保持睡眠大约 30 分钟左右。
尝试了以下方法:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
也就是 2^31 -1。
还做了一个循环加一个变量,到2^31就变成负数了
问题:
- 为什么变量在 2^31 处回绕?
- node.dsleep SDK 2.1 及更高版本不应该接受 64 位值吗?
此致,
塞萨尔
您已经收到了一些关于整数与浮点数的反馈。至于 dsleep
the documentation doesn't explicitly state that it accepts 64bit values but that's indeed what's happening as per https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月起)。
Lua SDK 3.0.1-dev(fce080e) 上的 5.1.4 尝试使用 node.dsleepMax() 并返回一个非常小的数字 (147324921)。然后我尝试手动将 node.dsleep 中的睡眠时间设置为 32 位最大值 (4294967295),它只保持睡眠大约 30 分钟左右。
尝试了以下方法:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
也就是 2^31 -1。
还做了一个循环加一个变量,到2^31就变成负数了
问题:
- 为什么变量在 2^31 处回绕?
- node.dsleep SDK 2.1 及更高版本不应该接受 64 位值吗?
此致,
塞萨尔
您已经收到了一些关于整数与浮点数的反馈。至于 dsleep
the documentation doesn't explicitly state that it accepts 64bit values but that's indeed what's happening as per https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月起)。