29.97、23.98 って何分の何、の計算、はそこはかとなくうまくいかない的な

またの名を「発掘作業」。

たまにしか使わないものについて、「ググる」よりもワタシの場合、結構「自分でかつてメモったもの」から探すことも多いわけね。今回その対象となったのは「0.4444444444444444って何分の何、の計算」。なんだけど、ワタシのサイトの「個性」つーかさ、要するに「不適切な見出し」なわけよね。タイトルで遊んじゃうもんだから、「実用的」に自分で勝手に困る。「自爆」てやつだ。

「なんで 29.97?」については、確か一年程度前にちょっとだけ調べて意味を知った。ただその際は自分だけで勝手に納得して、ブログにあげようとは思わなかった。つーか「29.97 の意味がわかりましたぁ」なんてネタ、誰得だよ、てことだ。なんだけれど、『「0.4444444444444444って何分の何、の計算」だとキーワードを思い出しにくくて検索しにくい、でも 29.97 ならば』と思ったわけさ。

というわけで「発見しやすいように」が動機のネタとして今回これを書こうと思った。思ったんだけれど…。


要するに、29.97 という値も 23.98 という値もどちらも、「意図した計算結果を丸めた値」なんだなぁ、てこと。

これだけで理解してもらえると思うんだけど…:

 1 >>> from fractions import Fraction
 2 >>> Fraction(29.97)
 3 Fraction(1054475631502295, 35184372088832)
 4 >>> fl = [24, 25, 30, 48, 50, 60, 100, 120]
 5 >>> res = [(c, Fraction(c).limit_denominator()) for c in [fps*1000/1001. for fps in fl]]
 6 >>> print("\n".join(map(repr, res)))
 7 (23.976023976023978, Fraction(24000, 1001))
 8 (24.975024975024976, Fraction(25000, 1001))
 9 (29.97002997002997, Fraction(30000, 1001))
10 (47.952047952047955, Fraction(48000, 1001))
11 (49.95004995004995, Fraction(50000, 1001))
12 (59.94005994005994, Fraction(60000, 1001))
13 (99.9000999000999, Fraction(100000, 1001))
14 (119.88011988011988, Fraction(120000, 1001))

つまり元の意味を知らないと 30000 / 1001 なんて導き出せない、てこと。


なお、「なんで 30000 / 1001 なんて中途半端な値を選んだの?」の疑問については、たとえばこのサイトとか読むとわかる。

つまりアナログ信号だったからこそ、てことなんだね。「音声信号と映像信号を分離」するために、一方を「整数倍にしない」というふうに作為を加えた、てのが「/1001」の意味。(説明が雑すぎるのは承知で言ってるので、正しく知りたければやはりちゃんとしたサイトを当たりなはれ。)