为什么在Lua编程中,我们总是优先选择使用lua_pushinteger()来存储整数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计316个文字,预计阅读时间需要2分钟。
Lua的当前版本不支持整数,只支持浮点数。(随着即将到来的5.3版本,这种情况正在改变,但让我们暂时忽略这一点。)因此,`lua_pushinteger()` 有其用途。当数字被转换为浮点数时,`lua_pushinteger()` 可以确保将整数以整数形式压入Lua堆栈,而不是自动转换为浮点数。如果直接使用浮点数表示整数,可能会导致精度损失或不可预期的行为。
Lua的当前版本不支持整数,只支持浮点数. (随着即将到来的5.3这种情况正在改变,但让我们忽略这一点.)所以,我的问题是:lua_pushinteger()有什么用?如果数字被转换为浮点数,为什么不直接使用lua_pushnumber()?
(请不要回答“为了将来与5.3的兼容性”,这对今天来说是一个很好的答案,但是这个答案不能满足我的风格:过去不期望整数支持.我想知道理由lua_pushinteger()首先被引入,事后看来并不道歉.)
为了文档,性能和正确性,引入了API中整数的显式处理.在API内部明确地集中处理整数允许核心使用与浮点数的最佳转换;在某些平台上,如果做得天真,这可能会很昂贵.它还允许核心检查溢出,但Lua 5.1和5.2没有检查这一点.
本文共计316个文字,预计阅读时间需要2分钟。
Lua的当前版本不支持整数,只支持浮点数。(随着即将到来的5.3版本,这种情况正在改变,但让我们暂时忽略这一点。)因此,`lua_pushinteger()` 有其用途。当数字被转换为浮点数时,`lua_pushinteger()` 可以确保将整数以整数形式压入Lua堆栈,而不是自动转换为浮点数。如果直接使用浮点数表示整数,可能会导致精度损失或不可预期的行为。
Lua的当前版本不支持整数,只支持浮点数. (随着即将到来的5.3这种情况正在改变,但让我们忽略这一点.)所以,我的问题是:lua_pushinteger()有什么用?如果数字被转换为浮点数,为什么不直接使用lua_pushnumber()?
(请不要回答“为了将来与5.3的兼容性”,这对今天来说是一个很好的答案,但是这个答案不能满足我的风格:过去不期望整数支持.我想知道理由lua_pushinteger()首先被引入,事后看来并不道歉.)
为了文档,性能和正确性,引入了API中整数的显式处理.在API内部明确地集中处理整数允许核心使用与浮点数的最佳转换;在某些平台上,如果做得天真,这可能会很昂贵.它还允许核心检查溢出,但Lua 5.1和5.2没有检查这一点.

