なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

PHPとJAVAを習ったばかりの初心者がJSちゃんからの問題を見て

f:id:nazuna_0124:20170327183448p:plain

適当にWeb回ってると広告で出ますよね。

f:id:nazuna_0124:20170408200420j:plain

これです。10?って脊椎反射した人ー?


それはともかく、これを見たときのPHPerの反応としては、


小数点の演算結果を比較してる時点でだめ、やりなおし

で、おっけーですか?


リンクはこちらです。

PHP: 浮動小数点数 - Manual


小数点は近似値(この表現でいい?)だから計算結果ずれる時あるから気をつけてね。

とゆー、プログラム全体の注意点ですが…そういえば習ったことないかも


0除算と並んで平均とか出すときに一緒に覚えてもよさげな知識です。


0.7+0.1==0.8 がfalse返ってくるのが有名です。


実際どうなってるのかPHPで表示しようとしてあきらめました

もしかして無理???


習ったばかりのJAVAさんに頼ることに。

public class Main{
    public static void main(String[] args) {
        double i = 0;
        int cnt =0;
        
        while(i<1){
            i += 0.1;
           System.out.println(i);
        }
    }
}


出力結果

0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999


こちらは一目りょーぜん!10回やっても1になってないのですねー。


あ、なんでこうなるかの詳しい説明はいいです。

小数点使うときには気をつけよー or 計算結果が合わない時は小数点疑え でおっけー。


こーゆう、うっすら覚えとくと困ったときに役立つ知識は

ループ処理で同じ説明3回もする余裕あるなら

授業に取り入れてもいいんじゃないかなーって思います。