Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゼロで割る気持ちを理解する
Search
ogawa-tomo
March 31, 2024
0
100
ゼロで割る気持ちを理解する
ogawa-tomo
March 31, 2024
Tweet
Share
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Amusing Abliteration
ianozsvald
0
84
Designing Powerful Visuals for Engaging Learning
tmiket
0
200
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Building Applications with DynamoDB
mza
96
6.9k
It's Worth the Effort
3n
188
29k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
46
How to train your dragon (web standard)
notwaldorf
97
6.5k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
How Software Deployment tools have changed in the past 20 years
geshan
0
31k
Transcript
ゼロで割る気持ちを理解する 2024/3/30 初めてのLT会 Vol.15 tomo
自己紹介 名前:tomo 入隊:2022/12/19(40期生) ↑五竜岳と鹿島槍ヶ岳の間のなんでもないところ
質問 JavaScriptで次の式を実行したらどうなると思いますか?
答え みなさんはこれを許せますか?
Rubyでは… こうであってほしい!
数学的には… だが、xにゼロを代入してはいけない!
なぜ、JavaScriptでは1/0がInfinityなのか?
答え JavaScriptの数値型(Number型)は浮動小数点数である(いわゆる「整数型」 ではない) 浮動小数点数の演算において、正の数を0で割った結果はInfinityであると規格 (IEEE754)で決まっている
Rubyでも… Float型 = 浮動小数点数
なぜ、浮動小数点数では0の割り算をInfinityとしたのか?
浮動小数点数とは 有限の桁数で表現 →値の範囲に限界がある/離散的な値しか扱えない/誤差を含む →実数を正確に表現することはできない! 浮動小数点数 有限の桁数(ビット列)で実数を精度よく近似表現するための手法 0 1 1 1
0 1 … 0 1 64bit(倍精度の場合)
浮動小数点数におけるInfinityとは 扱える値の範囲の限界を超えたら一律でInfinityとみなす 仕様(普通のJavaScript実行環境の場合) 21024-1よりも大きな正の数は、Infinityに変換される -(21024-1)よりも小さな負の数は、-Infinityに変換される Infinity -Infinity
浮動小数点数における0とは ゼロに近づける限界を超えたら一律で0とみなす 仕様(普通のJavaScript実行環境の場合) 2-1074よりも小さな正の数は、0に変換される -2-1074よりも大きな負の数は、-0に変換される 0 === -0 とする 0
-0
「0」の解釈 本当のゼロ 「0」に変換される区間 →「0」は変換される前はこの区間のどこかだった! →「0」はこの区間そのもの(確率分布)と解釈できる! →そうすると誤差を扱えているし、実数を表現できている!?
0で割ったときInfinityにする理由 本当のゼロ 「0」の区間(確率分布) →これが本当のゼロになる確率はゼロ! Infinityの区間
まとめ JavaScriptの数値型は浮動小数点数 浮動小数点数では、1/0はInfinityだと決まっている それは、「0」は「ゼロの近くの区間」だから(?) 浮動小数点数の気持ちがちょっと分かったかも?