浮動小数点の制限が計算にエラーを引き起こす原因を特定する方法を教えてください。たとえば、次のコードです。浮動小数点の問題を理解する
CalculateTotalTax = function (TaxRate, TaxFreePrice) {
return ((parseFloat(TaxFreePrice)/100) * parseFloat(TaxRate)).toFixed(4);
};
私は、この方法で間違った結果をもたらした2つの値を入力できませんでした。 toFixed(4)を削除した場合、計算がどこで精度を失うのかがわかります(小数点第6位付近)。しかし、私が浮動小数点を理解していることは、たとえ小数であっても表現できないことや誤解を招くことがあり、小数点以下4桁を常に正確に表すことができるということです。
MSDN)これは、それらが フォームK/ (2^n個のバイナリ分数(ない任意の量の正確な 表現を保持することができないことを意味... suchとして
をフロートを説明kおよびnは整数)
これは、すべての浮動小数点数(javascriptで使用されているものを含む)に適用されます。
基本的に私の質問はこれまでに残っています。どのような特定のメソッドが浮動小数点演算のエラーに脆弱であるか、それらのエラーがどの精度で実現するのか、それらのエラーを生成するために必要な入力があるかどうかを判断する方法はありますか?
うまくいけば、私が求めていることは理にかなっています。すべてのコンピュータ科学者はポイント浮動について知っておくべきことを読み取ることで
これはおそらくこのトピックに関連しています:http://en.wikipedia.org/wiki/Machine_epsilon –
*トニー・ポニー*、[Jon Skeet](http://stackoverflow.com/users/22656)/jon-skeet)は、優れた説明をしています(http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/)。読みやすく、わかりやすく面白く面白くなく面白く、このテーマによく投稿される[いくつかのリンク](http://docs.sun.com/source/806-3568/ncg_goldberg.html)ほど重くはありません。 – MarkJ