JSのMath.PIの真の値を調べた。
V8のGitHubミラーで、「math pi」などで検索し、それっぽいコードを拾ってきた。
https://github.com/v8/v8/blob/master/src/bootstrapper.cc#L2649
src/bootstrapper.cc
double const kPI = 3.1415926535897932;
// (中略)
InstallConstant(isolate, math, "PI", factory->NewNumber(kPI));
というように定義されていた。というわけで真の値は3.1415926535897932
である。
確かにChrome DevToolのConsoleでMath.PI * (10**16)
と打つと、31415926535897932
となるが、Math.PI * (10**17)
と打つと314159265358979300
になるので、狂い始めるのは確実にこの頃である。
ちなみにSpiderMonkeyも調べたのだが、M_PI
で実装されていたので、おそらく環境依存である。ビルドバッチを調べるのが面倒くさいのでやめた。
よく考えたら、なぜV8はM_PI
じゃないのかとは思った。
あとM_PI
の界隈はとても闇が深いことがわかった。なんかmath.h
やcmath
には直接定義してはいけないらしく……
C言語(標準)にM_PIは無い
もうC++のコードは読みたくない。以上。