質問: お世話になります。 下記のように$aと$bの変数があります。 ここでユーサーが要求する計算により、その結果の$aや$bが 割られた結果(浮動小数点型?)であれば小数第2位表示、 そうでなければ、整数表示にしたいと考えております。 そこで、小数点があるかに着目して if (strpos($aa,".")) { $result=number_format($aa,2); }else{ $result=number_format($aa); } と考えたのですが1)のケースのように割られているのに小数点が出ないケースがあるのでだめでした。 他に if (is_float($aa)) { $result=number_format($aa,2); }else{ $result=number_format($aa); } のように浮動小数点として判定する方法でも全てが trueになります。 目的としては除算した結果であれば小数点表示させたいのです。 しかしながら100/10のように整数が帰ってくるような除算では判定できません。 もちろん除算を含む否かの時点で識別することは可能ですが、計算結果やその型から 判定することは可能でしょうか? 宜しくお願い申し上げます。 ``` $a=int(4559200000) ; $b=int(5984313200); 1) $aa= $a/1000; var_dump($aa); //4559200 → 4,559,200.00と表示したい 2) $aa= $b/1000; var_dump($bb); //5984313.2 →5,984,313.20と表示したい 3) $aa= $a+10; var_dump($aa); //4,559,200,010 →小数表示したくない 4) $bb= $b+10 var_dump($bb); //5,984,313,210 →小数表示したくない ```
回答: 「必ず浮動小数点型で結果を返す除算を行う」関数myDivを作って、 除算はmyDivを利用、他の四則演算は通常の演算子を利用する ではいかがでしょう? 例 ``` function myDiv($a, $b){ $result = $a / $b; return number_format((float)$result, 2); } ```