Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IEEE754を完全に理解した
Search
Kaneko Takeshi
December 24, 2021
Programming
89
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IEEE754を完全に理解した
PIZZA_JP#47
Kaneko Takeshi
December 24, 2021
More Decks by Kaneko Takeshi
See All by Kaneko Takeshi
オープンソースライセンスについて勉強する定期
tkckaneko
0
48
Eye Tracking on the Browser
tkckaneko
0
100
CSSのトレンドをみんなで見よう -2021年-
tkckaneko
0
100
多分これが一番早いと思います
tkckaneko
0
31
暗黒面の話
tkckaneko
0
31
CSR / SSR / SSG / JAMstack
tkckaneko
0
79
BOLT
tkckaneko
0
41
CSS Logical Properties and Values
tkckaneko
0
61
Visual Effect Graphをさわってみた
tkckaneko
0
41
Other Decks in Programming
See All in Programming
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.2k
JRuby: Past, Present, and Future
headius
0
210
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
590
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
730
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.2k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
250
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
390
iOSDCのペンライトを自動制御したい!
akkeylab
0
230
一人だけ、Kiroが静止する日
hideg
0
140
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
19k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
400
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Technical Leadership for Architectural Decision Making
baasie
3
580
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
The Curse of the Amulet
leimatthew05
3
15k
Deep Space Network (abreviated)
tonyrice
0
350
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Site-Speed That Sticks
csswizardry
13
1.5k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Transcript
IEEE 754を完全に理解した
JavaScriptの小数計算 消費税の計算をしようとする 価格:100円 消費税:8% 108円ですよね?
JavaScriptの小数計算 消費税の計算をしようとするけど、消費税が上がりました 価格:100円 消費税:10% 110.00000000000001円???
JavaScriptの数値:Number型 JavaScript の Number 型は IEEE 754 の倍精度 64ビットバイナリ形式であ り、
Java や C# の double のようなものです。これは小数点以下の数値を表 すことができることを意味しますが、格納できる値にはいくつかの制限があ ります。 Number は小数点以下約 17 桁の精度しか保持できません。演算 は丸め誤差の影響を受けます。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number
小数を扱うときに使うライブラリ こんなライブラリを使うのがデファクトスタンダードになっている - big.js - 超軽量 - bignumber.js - big.jsより多機能
- decimal.js - bignumber.jsと同じ機能 - 精度は小数点以下ではなく有効数字で指定
IEEE 754を勉強する 浮動小数点方式においては、固定長の仮数部と固定長の指数部の2つの 部分の組み合わせによって、数値を表現する。 符号(1 ビット) | 指数部(11 ビット) |
仮数部(52 ビット) https://ja.wikipedia.org/wiki/浮動小数点数
IEEE 754を勉強する 符号: 正の値なら 0、 負の値なら 1。 指数: 実際の値に 1023
を加えた値を使う。11 桁なので2048まで表現でき るけど、指数部が負の時があるから-1023~1024 を表現して 1023 を足す ようにしてる。 仮数: 指数を調整して 1.◯◯ のように 1.で始まるように小数点を移動す る。先頭の 1 は絶対なので無視する。 https://ja.wikipedia.org/wiki/浮動小数点数
IEEE 754を勉強する 例えば、2.5を浮動小数点数で表す 符号は正の値なので 0 仮数の絶対値は2.5で、2と0.5に分ける 2を2で割ると 2 / 2
→ 1 で余り 0 0.5を2でかけると 0.5 * 2 → 1.0 1以上なので1 2進数で表すと10.1となる https://ja.wikipedia.org/wiki/浮動小数点数
IEEE 754を勉強する 1.の部分は絶対なので無視 仮数部は1未満なので、右シフトして相殺分として2の指数を1とする (1 + 0.25)* 2 ^ 1
と変換される 仮数部は0.25、指数は1となる 指数部は指数にバイアス値1023を足すと1024になる https://ja.wikipedia.org/wiki/浮動小数点数
IEEE 754を勉強する 符号部(1ビット) :+ → 0 指数部(11ビット) :1024 → 100
0000 0000 仮数部(52ビット) :0.25 → 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ※ 残りを 52 ビットになるように 0 でうめる 浮動小数点は、最上位ビットから符号部、指数部、仮数部の順に表すため 0 100 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 https://ja.wikipedia.org/wiki/浮動小数点数
0.1で考えてみる 0.1 * 2 → 0.2 1未満なので0 0.2 * 2
→ 0.4 1未満なので0 0.4 * 2 → 0.8 1未満なので0 0.8 * 2 → 1.6 1以上なので1 0.6 * 2 → 1.2 1以上なので1 0.2 * 2 → 0.4 1未満なので0 0.4 * 2 → 0.8 1未満なので0 0.8 * 2 → 1.6 1以上なので1 0.6 * 2 → 1.2 1以上なので1 循環小数!
0.1で考えてみる 入りきらなくなるので値を丸める必要がある 最近接偶数丸め。0 は切り捨てて 1 は切り上げる 0011 1101 1100 1100
1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1 1 なので切り上げ 丸め誤差!
- ちゃんと計算してみると楽しい まとめ