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
ゼロで割る気持ちを理解する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ogawa-tomo
March 31, 2024
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゼロで割る気持ちを理解する
ogawa-tomo
March 31, 2024
Featured
See All Featured
Scaling GitHub
holman
464
140k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
The browser strikes back
jonoalderson
0
1.8k
How to build a perfect <img>
jonoalderson
1
6.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Side Projects
sachag
456
43k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
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」は「ゼロの近くの区間」だから(?) 浮動小数点数の気持ちがちょっと分かったかも?