0

好吧,我一整天都在处理这个问题,我认为这需要一些帮助。

PHP

$hour1 = (float) $date1 / 10000;
$hour1 = (float) floor($hour1);

$hour2 = (float) $date2 / 10000;
$hour2 = (float) floor($hour2);

$minute1 = (float) $date1 / 10000;
$minute1 = (float) $minute1 - floor($minute1);
$minute1 = (float) $minute1 / 60;
$minute1 = (float) $minute1 * 100;

$minute2 = (float) $date2 / 10000;
$minute2 = (float) $minute2 - floor($minute2);
$minute2 = (float) $minute2 / 60;
$minute2 = (float) $minute2 * 100;

$date = (float) ($hour1 + minute1) - ($hour2 + minute2);
$date = floatval($date);

正如你所看到的,我在类型转换方面有点过火了。

变量值

$minute1 = .564478
$hour1 = 19

$minute2 = .9885546
$hour2 = 8

$date = (float) ($hour1 + minute1) - ($hour2 + minute2);

$date = (float) (19 + .564478) - (8 + .9885546);

现在给出的结果实际上是

11

并不是

10.575932......

奇怪的是,当我在没有变量的情况下执行此操作时echo (19 + .564478) - (8 + .9885546);......我得到10.575932.......

我知道大多数编程语言都使用浮点数,但我已经尝试了所有方法,包括显式类型转换。这里发生了什么?

4

1 回答 1

1
$date = (float) ($hour1 + minute1) - ($hour2 + minute2);

minute1你之前没有忘记 $minute2吗??

如果你有,PHP 会将这个 vars 视为常量,并且$hour1 - $hour2在你的情况下只计算女巫返回 11

它应该看起来像

$date = (float) ($hour1 + $minute1) - ($hour2 + $minute2);
于 2012-10-25T00:12:24.823 回答