29101


**前提**  
・浮動小数点型のDBカラムに、「-12.656322」「987.732849」「0.000000」などの数値が入っています

* * *

**目的**  
・PHPでデータ取得後、JSで「0ではない判定」を行いたい

* * *

**Q1**  
・DBより「0.000000」を取得後、PHPからjsへ渡すと、「0」になってしまいます  
・なぜでしょうか？  
・気にする必要はない？

[code]

     var hoge = <?php echo $hoge; ?>;
     console.log(hoge); //0
    
[/code]

**Q2**  
・条件分岐する際、「0」と「0.000000」を考慮する必要はあるでしょうか？  
・どちらもNumber型？  
・「==」と「===」の違い？

・とりあえず、下記にしたのですが、

[code]

    if(hoge != 0){}
    
[/code]

普通はどう書くのでしょうか？


CC BY-SA 3.0
2016-09-24T16:41:09.147
29100
2016-09-24T17:08:15.510
7886
question
javascript php
0以外の判定をしたい。浮動小数点型のDBカラムからデータを取得した場合


Q1  
javascript では数値はいわゆる浮動小数型です。  
他の言語のように整数型というのがありません。  
なので

[code]

    var hoge = 0.00000;
    var hoge = 0.0;
    var hoge = 0;
    
[/code]

はどれも同じ意味になります。

Q2  
もしもPHPで０にならない微量な数値があったとしても  
文字列として0.00000のような０を意味する文字列になって  
（微量な数値があったとしても、ここでその情報は失われる)  
javascriptでそれは０になりますから  
「0」と「0.000000」(0.000000には微量な数値があるが表現上０に見える)を考慮する必要はありません。  
つまり、  
`if(hoge != 0){…}`  
で問題無いです。

* * *

一般には浮動小数の計算の結果理論的には０になるはずであっても、  
計算誤差や表現誤差によって正確には０でないような場合には  
`if(-0.01 < hoge && hoge < 0.01){…}`  
のような範囲で調べるようなことが必要な場合があります。


CC BY-SA 3.0
2016-09-24T17:08:15.510
29101
2016-09-24T17:08:15.510
5044
29100
answer