如果我运行print(8 / 2)
,Lua demo输出4.0
。如果我然后运行print(math.floor(8 / 2))
,则会打印4
。为什么Lua在第一个例子中打印.0
?所有8
,2
和4
都应该很容易以二进制形式准确表示,所以肯定不存在任何舍入问题吗?
答案 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,因此它也适用于非整数指数。分区(
/
)是一个分区,它将商舍入负无穷大,即其操作数的分区。