相关疑难解决方法(0)

了解浮点问题

有人可以帮我理解如何确定浮点限制何时会导致计算错误.例如以下代码.

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中使用的浮点数).

从根本上说,我的问题归结为这一点.如何确定任何特定方法是否容易受到浮点运算中的错误的影响,这些错误将以何种精度实现,以及产生这些错误需要哪些输入?

希望我所要求的是有道理的.

javascript c# vb.net floating-point

13
推荐指数
1
解决办法
6118
查看次数

比较相等是否可以使用`==`?

比较相等是否可以使用==

例如:

int a = 3;
int b = 4;
Run Code Online (Sandbox Code Playgroud)

如果要检查是否相等,您应该使用:

if (a == b)
{
     . . .
}
Run Code Online (Sandbox Code Playgroud)

如果使用浮点数,情况会改变吗?

c++ equality

5
推荐指数
1
解决办法
866
查看次数

标签 统计

c# ×1

c++ ×1

equality ×1

floating-point ×1

javascript ×1

vb.net ×1