Well I have been on this problem the entire day and I think that qualifies the need for some help.
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);
As you can see I’ve went a little overboard with the type casting.
Variable Values
$minute1 = .564478
$hour1 = 19
$minute2 = .9885546
$hour2 = 8
$date = (float) ($hour1 + minute1) - ($hour2 + minute2);
IS
$date = (float) (19 + .564478) - (8 + .9885546);
Now the result given is actually
11
AND NOT
10.575932......
Curiously, when I do this without variables echo (19 + .564478) - (8 + .9885546);… I get the floating point result of 10.575932.......
I understand that most programming languages round out floating points but I’ve tried everything including up to explicitly type casting. What is going on here?
Didn’t you forget about $ before
minute1andminute2??If you had, PHP would treat this vars as constans and count only
$hour1 - $hour2witch returns 11 in your caseit should look like