为什么 Lua 在将 8 除以 2 时会输出 4.0 而不是 4?

如果我运行 print(8 / 2),[Lua 演示](https://www.lua.org/cgi-bin/demo)将输出 4.0。如果我接着运行 print(math.floor(8 / 2)),它会输出 4。为什么 Lua 在第一个例子中会输出 .0824 都应该很容易以二进制准确表示,所以不应该存在任何四舍五入的问题才对吧?

点赞
用户2616735
用户2616735

Lua 5.3区分浮点数和整数:55.0是不同的数字类型。

对于浮点数,tostring将始终包括小数点., 而对于整数,tostring将从不包括小数点.

/运算符用于浮点数除法;//则产生整数。

https://www.lua.org/manual/5.3/manual.html#3.4.1

指数和浮点数除法(/)总是将其运算数转换为浮点数,结果也总是浮点数。指数使用ISO C函数pow,因此它也适用于非整数指数。

地板除法 (//) 是一个将其运算数商向下取整的除法,即其运算数的地板除法。

2018-04-29 00:56:26