为什么Lua在将8除以2时显示4.0而不是4?

时间:2018-04-29 00:52:20

标签: lua rounding

如果我运行print(8 / 2)Lua demo输出4.0。如果我然后运行print(math.floor(8 / 2)),则会打印4。为什么Lua在第一个例子中打印.0?所有824都应该很容易以二进制形式准确表示,所以肯定不存在任何舍入问题吗?

1 个答案:

答案 0 :(得分:4)

Lua 5.3区分浮点数和整数:const rp = require('request-promise'); rp({json: true}, "https://blockchain.info/ticker").then(data => { // use data here console.log(data); }).catch(err => { // process error here console.log(err); }); 5具有不同的数字类型。

对于浮点数,

5.0将始终包含小数tostring.,对于整数,将永远不会包含小数tostring

.运算符用于浮点除法; /生成整数。

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

  

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

     

分区(/)是一个分区,它将商舍入负无穷大,即其操作数的分区。