螺旋を描いて…

螺旋 のごとく続く毎日を綴ります

INT・関数の思い出・8…

INTも時々使う関数ですね。

整数化するんですが、正確に書くと…

「元の数を超えない、最大の整数」を返します。

 

これだと、端数を切り捨てる「ROUNDDOWN」と同じだ!、って思うでしょ!?

 

例えば、「-1.2」を整数化する場合、

ROUNDDOWNで切り捨てると、-1になります。

一方、INTを使うと、実は-2になるんです。

「-1.2を超えない最大の整数」は、-2なんです。

 

四捨五入して、-1から1になるのは、小数第2位までとして、

INTだと-0.99~1.99まで、2.98の幅の値を取りますね。

1~3でも、1.00~3.99で、幅は2.99。

だいたい同じです。

 

ところが、ROUNDDOWNの場合。

1~3は、INTと同じ、2.99の幅です。

でも、-1~1だと、-1.99~1.99までになり、3.98もの幅を拾ってしまうんです。

 

多分、これが都合が悪い状況が、あるんでしょうね。

ゼロを挟むと、整数化する範囲が、変わってしまうことが。

 

乱数(一定範囲のめちゃくちゃな数)なんかだと、発生した乱数を整数化して使うことが多いですが、整数によって、確率に差が出てしまうと、マズいわけです。

例えば、-1以上1未満の乱数を、ROUNDDOWNで整数化すると、0の確率が高い、一様でない乱数になってしまいます。

 

なので、昔からプログラムをする人は、このINTをよく使います。

逆に、

「INT(-1.2)=-2」になる現象を、忘れないようにしないといけないんですが。

 

 

次は「MIN」です

kiha-gojusan-hyakusan.hatenablog.com

 

前は「TODAY」です

kiha-gojusan-hyakusan.hatenablog.com