アカウント名:
パスワード:
アドホックに修正https://twitter.com/ockeghem/status/982136647251718148 [twitter.com]
修正完了、コミット…と
if (x == 4.0) return 2.0;else if (x == 0.04) return 0.2;else return sqrt(x);
0.02 の時点で正確に表せていない。
元記事に、完全平方(perfect square)の場合を検出して正確な平方根を返すようにしたとちゃんと書いてるんだが、誰も読んでないのか。hylomが読んでいないのは当然としても。
修正方法が分かれば、隣のツリーで盛り上がっているような小数の場合が修正されていないことも完全平方の定義からまったく不思議はないとわかる。
すまん、元記事のどこに perfect square の話が書かれていたか、教えてもらえないだろうか。
それをアドホックというのはおかしい。そもそも整数と小数は分けて考えないといけない。十進数の0.04自体を二進数で正確にあらわせないし。
整数の平方根は無理数になるか整数になるかどちらかなので、今回のやつはそれを真面目に判定するようになっただけのこと。https://ja.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E6%95%B0 [wikipedia.org]
√0.0625-0.25もダメなので、正直かなり精度が低いのは確か。PC Watch記事中の「32桁精度の浮動少数計算」って、まさか単精度実数のことじゃないよね?
> 十進数の0.04自体を二進数で正確にあらわせないし。
浮動小数点では正確に表せないというなら同意しますけど、単なる分数なんだから二進数であらわせないまで言うと言い過ぎでしょ。分子と分母を値として保持すればいいんだから。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
Re: どうやって修正したのだろう (スコア:0)
アドホックに修正
https://twitter.com/ockeghem/status/982136647251718148 [twitter.com]
Re: どうやって修正したのだろう (スコア:1)
修正完了、コミット…と
if (x == 4.0) return 2.0;
else if (x == 0.04) return 0.2;
else return sqrt(x);
Re: (スコア:0)
0.02 の時点で正確に表せていない。
Re: どうやって修正したのだろう (スコア:1)
元記事に、完全平方(perfect square)の場合を検出して正確な平方根を返すようにしたとちゃんと書いてるんだが、誰も読んでないのか。hylomが読んでいないのは当然としても。
修正方法が分かれば、隣のツリーで盛り上がっているような小数の場合が修正されていないことも完全平方の定義からまったく不思議はないとわかる。
Re: (スコア:0)
すまん、元記事のどこに perfect square の話が書かれていたか、教えてもらえないだろうか。
Re: (スコア:0)
それをアドホックというのはおかしい。
そもそも整数と小数は分けて考えないといけない。
十進数の0.04自体を二進数で正確にあらわせないし。
整数の平方根は無理数になるか整数になるかどちらかなので、
今回のやつはそれを真面目に判定するようになっただけのこと。
https://ja.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E6%95%B0 [wikipedia.org]
Re: (スコア:0)
√0.0625-0.25もダメなので、正直かなり精度が低いのは確か。
PC Watch記事中の「32桁精度の浮動少数計算」って、まさか単精度実数のことじゃないよね?
Re: (スコア:0)
> 十進数の0.04自体を二進数で正確にあらわせないし。
浮動小数点では正確に表せないというなら同意しますけど、単なる分数なんだから二進数であらわせないまで言うと言い過ぎでしょ。分子と分母を値として保持すればいいんだから。