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
74
ゼロで割る気持ちを理解する
ogawa-tomo
March 31, 2024
Tweet
Share
Featured
See All Featured
BBQ
matthewcrist
89
9.7k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Building Adaptive Systems
keathley
43
2.6k
Building an army of robots
kneath
306
45k
How STYLIGHT went responsive
nonsquared
100
5.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
How GitHub (no longer) Works
holman
314
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Thoughts on Productivity
jonyablonski
69
4.7k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
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」は「ゼロの近くの区間」だから(?) 浮動小数点数の気持ちがちょっと分かったかも?