質問

JavaScriptのすべての数学機能は、度の代わりにラジアンを使用します。しかし、それらは不平等であるか、私が基地から離れています。

学位からラジアンへの変換は次のとおりです。

var rad = angle * Math.PI / 180

90度の角度 平等です 1.57079633ラジアン

90度の角度のコサイン 平等です 0.
1.57079633ラジアンのコサイン 平等です -3.20510345 × 10-9.

JavaScriptでは、丸めエラーを回避するためにすべてが1つのステップで行われることに注意してください。

var cos = Math.cos(angle * Math.PI / 180);

私は明らかにここで明らかな何かを見逃していますが、少年はそれがコードを台無しにしているのです。

役に立ちましたか?

解決

丸めエラーを避けるために、すべてが1つのステップで行われます

それはどのようにして丸めエラーを避けますか?これは、丸めエラーが別の変数で使用できないことを意味します。それだけです。

本当です PIの値を浮動小数点数として正確に表すことはできないため、Pi / 2の真の値もできません。だからあなたは与えることができません Math.cos 0を取得するために必要な正確な値。-9 aです 非常に小さい 番号。これは、長さ10,000キロメートルのラインを描いている場合、関連する軸から1cm離れたところになることを意味します。

これはまさに、浮動小数点数を扱うときに期待すべき種類のものです。平等と比較しないでください - 何らかの寛容の中で比較してください。

他のヒント

常に丸めエラーがあります。とにかく、フローティングポイントは数学的に正確ではなく、一定量の有意な数字に対してのみ正確です。

1/1000000000の順にエラーが発生したときに「ねじ込み」しないようにコードを変更します。

私たちのほとんどがコンピューターで深刻な合計をしている0 -3.20510345×10^-9に等しく、フローティングポイント数を使用するときに期待する権利がある合理的な程度の精度に等しくなります。これは、定期的にカバーされているトピックです。

ええ、ここでタイプ変換に関するデータを失っているだけです。

ラジアンの90度は、正確に1.57079633に等しくありません。小数点以下の場所があれば、予想どおりにまっすぐに戻ります。

あなたは常にこのようなことに注意する必要があります。上記のように、10^-9はゼロに十分近いです。

また取られます MSDN:

さらに、二重のタイプの精度が失われるため、プラットフォームによって算術操作と割り当て操作の結果がわずかに異なる場合があります。たとえば、リテラルダブル値を割り当てた結果は、.NETフレームワークの32ビットバージョンと64ビットバージョンで異なる場合があります。次の例は、リテラル値-4.42330604244772E -305と、値が-4.42330604244472E -305の変数が二重変数に割り当てられた場合のこの違いを示しています。この場合の解析(文字列)メソッドの結果は、精度の損失に悩まされないことに注意してください。

コンピューターでは、π/2ラジアン できません πは無限に長い数であるため、正確に90度等しい。したがって、コンピューターが∞ビットでない限り、πの完全なプレシオンを期待することはできません。

私は気がついた:

-3.20510345×10-9は-0.00000000320510345と同じで、ゼロに非常に近いです。

GoogleのRadianへの変換は丸みを帯びており、その丸めはERRを引き起こします。

私の推測では、JavaScriptは、数字での精度の欠如で有名であるため、誤ったラジアンを作成するため、そのCosignはかなり離れています。

しかし、私がこれをどのように解決するかわからない - それは他の角度では機能しないため、丸めは受け入れられません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top