hirhirの日記

Pythonとデータ分析と人口知能

Python3 入門:ネイティブデータ型 数値 浮動小数点

Python3での数値および浮動小数点を学習する。

まずは四則演算、いつものようにIpythonを使用する

学習開始

In [14]: 1+1
Out[14]: 2

In [15]: 1-1
Out[15]: 0

In [16]: 1*1
Out[16]: 1

In [17]: 1/1
Out[17]: 1.0

In [18]: 1+1.0
Out[18]: 2.0

In [19]: 1-1.0
Out[19]: 0.0

In [20]: 1*1.0
Out[20]: 1.0

In [21]: 1/1.0
Out[21]: 1.0

In [22]: 1.0+1.0
Out[22]: 2.0

In [23]: 1.0-1.0
Out[23]: 0.0

In [24]: 1.0*1.0
Out[24]: 1.0

In [25]: 1.0/1.0
Out[25]: 1.0

In [26]: 1.0-1
Out[26]: 0.0

In [27]: 1.0+1
Out[27]: 2.0

In [28]: 1.0*1
Out[28]: 1.0

In [29]: 1.0/1
Out[29]: 1.0

これを見ると剰余算で割り算は少数をつける

少数の計算は結果は必ず少数で帰るということ

In [30]: type(1)
Out[30]: int

In [31]: type(1.0)
Out[31]: float

要はこういう事ね

intfloatに加えるとfloatが生み出される。

Pythonintfloatに型強制 (coercion) してから加算を行い、その結果としてfloatを返すのだ。

 まぁ型強制ができる。

In [32]: float(1)
Out[32]: 1.0

In [33]: int(1)
Out[33]: 1

In [34]: int(1.0)
Out[34]: 1

In [35]: float(1.0)
Out[35]: 1.0

In [36]: 1.12345678901234567890
Out[36]: 1.1234567890123457

In [37]: 123456789012345678901234567890
Out[37]: 123456789012345678901234567890

少数は15位までは正確

整数はどこまでも正確なような気がする?

>こういうことらしい

float()関数を呼び出すことで、明示的にintをfloatに型強制できる。
当然ながら、int()関数を呼び出すことで、明示的にfloatをintに型強制できる。
int()関数は四捨五入ではなく切り捨てを行う。
int()関数は、負数を0の方向へ向けて切り捨てる。これは正しい切り捨て関数であり、床関数 (floor function) ではない。
浮動小数点数は小数第15位まで正確だ。
整数はどんな大きさでも対応できる。

 

In [38]: 11/2
Out[38]: 5.5

In [39]: 11//2
Out[39]: 5

In [40]: -11//2
Out[40]: -6

In [41]: 11/-2
Out[41]: -5.5

In [42]: 11//-2
Out[42]: -6

繰り上がりやがりました //は注意が必要です

In [43]: 11**2
Out[43]: 121

In [44]: 11%2
Out[44]: 1

こいつはまぁ素直 

 

/演算子浮動小数点数の除算を行う。たとえ分子と分母の両方がint型であっても、この演算子はfloat型を返す。
//演算子はひねくれた整数除算を行う。結果が正の数の場合は、整数への切り捨て(四捨五入ではない)とみなすことができるが、これについては注意が必要だ。
負の数を整数除算する場合、//演算子は最も近い整数に繰り「上げる」。数学的に言えば、−6は−5より小さいので「繰り下げ」というべきだが、−5に切り捨てられることを期待していると足もとをすくわれる。
//演算子は常に整数を返すわけではない。分子や分母のどちらか一方でもfloatの場合は、なお結果を最も近い整数に丸めてくれるのだが、実際の戻り値はfloatで返される。
**演算子は「べき乗」を意味する。つまり112は121だ。
%演算子は整数除算の余りを返す。11を2で割ると5余り1になるので、ここでの結果は1となる。

 

今回の学習教材はオンラインと図書

オンラインでは

ネイティブデータ型 - Dive Into Python 3 日本語版

3. 形式ばらない Python の紹介 — Python 3.4.2 ドキュメント

 参考書籍

これは初めてなら良いと思う、ただこれだけでは開発はできないけれども

とっかかりにはなります。ただし2系です。

 

こいつはまぁ安定2系と3系のリファレンスとして長く使えそう

ネットが規制されている環境下ならとても良いと思います。