我在玩从秒中获得小时和分钟的游戏,我们都看到了许多类似的问题,但我不确定什么解决方案是最好的
$seconds = 6530;
$secs = $seconds % 60;
$hrs = $seconds / 60;
$mins = $hrs % 60; // Causing the issue
$hrs = $hrs / 60;
var_dump($hrs, $mins, $secs);
字符串
这是代码,它给了我:
Deprecated: Implicit conversion from float 108.83333333333333 to int loses precision
float(1.8138888888888889)
int(48)
int(50)
型
我理解这个错误,这不是问题,问题是如何解决它。
$mins = (int) ($hrs % 60);
and
$mins = intval($hrs % 60);
as well as
$mins = (int) round($hrs % 60);
型
但我也有同样的问题。
以下是供参考的沙箱:https://onlinephp.io/c/b5b45
什么是正确的方法来解决这个问题?我确实希望这作为一个int
,但不知道如何正确转换它.
3条答案
按热度按时间u2nhd7ah1#
如果你想把你的浮点数转换成int,你可以使用一些函数,比如
floor
round
等等。在你的情况下,你正在寻找地板,所以你应该做:
字符串
这是给予:
型
nwlls2ji2#
这里已经认可的答案并没有给出给予正确的结果。我们知道结果应该是:
字符串
实际上是6530秒,因为:3600 + 2880 + 50 = 6530。
正确的计算方法是:
型
参见:https://3v4l.org/8JKQ9
然而,还有另一种计算方法:
型
这是一个简单的例子。结果是:
zsohkypk3#
使用floor(var)函数防止错误