0 レビュー
1 回答
php-明示的なキャストにもかかわらず、奇妙な浮動小数点の結果の動作
私は一日中この問題に取り組んできましたが、それは何らかの助けが必要なことだと思います。
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);
IS
$date = (float) (19 + .564478) - (8 + .9885546);
これで結果は実際に
11
そしてしない
10.575932......
不思議なことに、変数なしでこれを行うと、 echo (19 + .564478) - (8 + .9885546);
... 10.575932......
の浮動小数点結果が得られます。
ほとんどのプログラミング言語がフローティングポイントを完成させることは理解していますが、明示的に型キャストするまでを含むすべてを試しました。ここで何が起こっているのですか?
わからない
0
レビュー
答え :
解決策:
$date = (float) ($hour1 + minute1) - ($hour2 + minute2);
minute1
とminute2
の前の$を忘れませんでしたか??
もしあれば、PHPはこの変数を定数として扱い、 $hour1 - $hour2
ウィッチはあなたの場合は11を返します
次のようになります
$ date =(float)($ hour1 + $ minute1)-($ hour2 + $ minute2);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。