Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
小数点后无数字时的Lua数学单元舍入数_Lua_Ceil - Fatal编程技术网

小数点后无数字时的Lua数学单元舍入数

小数点后无数字时的Lua数学单元舍入数,lua,ceil,Lua,Ceil,我想用Lua中的math.ceil对这些数字进行四舍五入 有些情况是有意义的,比如: ceil(260.5)->261 但有些案例很奇怪,比如: ceil(2.2*100)->221#假设没有取整,答案是220 我不知道为什么会这样,如果我想在小数点后有数字时对数字进行四舍五入,如果只有一个整数,则不进行四舍五入,该怎么办 --更新: 感谢@Cyclaminit的回答: 2.2*100实际上略大于220.0,因为2.2不能精确地表示为浮点数。Try('.15f'):格式(2.2*100)

我想用Lua中的math.ceil对这些数字进行四舍五入

有些情况是有意义的,比如:

  • ceil(260.5)->261
但有些案例很奇怪,比如:

  • ceil(2.2*100)->221#假设没有取整,答案是220
我不知道为什么会这样,如果我想在小数点后有数字时对数字进行四舍五入,如果只有一个整数,则不进行四舍五入,该怎么办

--更新: 感谢@Cyclaminit的回答: 2.2*100实际上略大于220.0,因为2.2不能精确地表示为浮点数。Try('.15f'):格式(2.2*100):对我来说,它给出了'220.000000000000028'

Ceil将返回最接近且不小于220.000000000000028的整数,因此返回221

获得220的解决方案是:
math.floor(2.2*100+0.5)->返回220,因为math.floor返回最接近但不大于220.0000000000000 28

尝试
tonumber(string.format(%.0f),2.2*100))
2.2*100
实际上比
220.0
大一点,因为
2.2
不能精确地表示为浮点数。试试
('%.15f'):格式(2.2*100)
:对我来说,它给出了
'220.000000000000028'
@cyclaminit,明白了,这样ceil将把221作为2.2*100的最接近整数。谢谢你的回答!数学。地板(2.2*100+0.5)也能做到!谢谢@lhf