我正在玩弄幾秒鐘的時間和分鐘,我們都看到了許多與此類似的問題,但我不確定哪種解決方案是最好的
$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,但不確定如何正確轉換它。
uj5u.com熱心網友回復:
如果您想將您的浮點數轉換為 int,您可以使用諸如此類的一些函式floor round。
在你的情況下,你正在尋找地板,所以你應該這樣做:
<?php
$seconds = 6530;
$secs = $seconds % 60;
$hrs = $seconds / 60;
$hrs = floor($hrs);
$mins = $hrs % 60;
$hrs = $hrs / 60;
var_dump($hrs, $mins, $secs);
那是給:
float(1.8)
int(48)
int(50)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/505788.html
標籤:php
