1
/
5

浮動小数点について調べてみた【株式会社ライトコード】

はじめに

こんにちは!

今回は結構ややこしい浮動小数点数について書こうと思います。

普通に計算すると以下のようになります。
0.1 + 0.2 = 0.3
一方でだいたいのプログラミング言語で以下の計算をすると
0.1 + 0.2 => 0.30000000000000004
のように表示されます。
今回はこのなぜ?についてなるべくわかりやすく説明したいと思います。少しでも理解が深まれば幸いです。

コンピュータではどのように計算するか

ご存知のようにコンピュータはデータを2進数で扱います。

4(10)=100(2)

5(10)=101(2)

100(2)+101(2)=1001(2)=9(10)

それはコンピュータの特性として演算は論理演算に回帰するということが理由になります(深入りしません)。そのために2進数で表現されます。

小数の計算

ここで、一旦分数での計算を考えてみます。

13+23=1

ここに「縛り」を加え、分数は使用できない、小数点以下4桁で切り捨て、という条件を加えます。

すると以下のようになります。

0.3333+0.6666=0.9999

このような縛りがコンピュータでも発生します(データを有限ビットで表現しなくてはならない)。

2進数小数の計算

小数でない場合

4(10)=1(10)×2(10)2+0(10)×2(10)1+0(10)×2(10)0

2進数にするために係数をひろいます。

4(10)=100(2)

少数の場合も同様に以下のように分解します。

0.5(10)=0(10)×2(10)0+1(10)×2(10)−1

2進数にするために係数をひろいます。

0.5(10)=0.1(2)

しかし、2進数の場合は以下のようになります。

記事の続きは下のURLをクリック!

https://rightcode.co.jp/blogs/47696



エンジニア積極採用中です!

現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!

採用ページはこちら:https://rightcode.co.jp/recruit

社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life

社長と一杯飲みながらお話しませんか?(転職者向け)

特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk

もっとワクワクしたいあなたへ

現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!

ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。

有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。

  • もっと大きなことに挑戦したい!
  • エンジニアとしてもっと成長したい!
  • モダンな技術に触れたい!

現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?

ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。

  • ライトコードの魅力を知っていただきたい!
  • 社風や文化なども知っていただきたい!
  • 技術に対して熱意のある方に入社していただきたい!

一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。

【コーポレートサイト】https://rightcode.co.jp/

【採用募集】https://rightcode.co.jp/recruit(こちらからの応募がスムーズ)

【wantedlyぺージ】https://www.wantedly.com/companies/rightcode

Invitation from 株式会社ライトコード
If this story triggered your interest, have a chat with the team?
株式会社ライトコード's job postings

Weekly ranking

Show other rankings
Like Hiroyuki Choshi's Story
Let Hiroyuki Choshi's company know you're interested in their content