有人可以帮我理解如何确定浮点限制何时会导致计算错误.例如以下代码.
CalculateTotalTax = function (TaxRate, TaxFreePrice) {
return ((parseFloat(TaxFreePrice) / 100) * parseFloat(TaxRate)).toFixed(4);
};
Run Code Online (Sandbox Code Playgroud)
我无法输入任何导致我这个方法的结果不正确的值.如果我删除toFixed(4),我可以看到计算开始失去准确性的位置(大约在小数点后6位).尽管如此,我对浮点数的理解是,即使是小数字有时也无法表示或者我误解了,并且可以精确地表示4位小数(例如).
MSDN解释浮动本身 ......
这意味着它们不能保存任何不是二进制分数的数量的精确表示(形式为k /(2 ^ n),其中k和n是整数)
现在我假设这适用于所有浮点数(包括javascript中使用的浮点数).
从根本上说,我的问题归结为这一点.如何确定任何特定方法是否容易受到浮点运算中的错误的影响,这些错误将以何种精度实现,以及产生这些错误需要哪些输入?
希望我所要求的是有道理的.
比较相等是否可以使用==?
例如:
int a = 3;
int b = 4;
Run Code Online (Sandbox Code Playgroud)
如果要检查是否相等,您应该使用:
if (a == b)
{
. . .
}
Run Code Online (Sandbox Code Playgroud)
如果使用浮点数,情况会改变吗?