[英]how many digits after decimal point can be stored in memory in javascript
我不明白javascript中的这个问题:
我使用 mathjs 数字类型作为在特定点存储函数值的变量。 并且在 mathjs 的文档中说,如果该值大于 1.7976931348623157e+308 那么它将被转换为无穷大。 但我确切地知道我的函数的价值从来没有像那样,它被评估为低得多的价值。 虽然我处理后收到的结果是无穷大。 那么也许是因为它可以容纳的小数点后位数更大? 如果是这样,如果我将返回的值四舍五入到它可以容纳的点之后的位数,这会好吗? PS用于数字的库是http://mathjs.org/
function calc(f, a, b, tol, k_max) {
var starttime = performance.now();
iter = 0;
a = math.number(a);
b = math.number(b);
tol = math.number(tol);
k_max = math.number(k_max);
var x1, x2, f1, f2, iter = 0;
var parser = math.parser();
x1 = a + (3 - math.sqrt(5)) * (b - a) / 2;
x2 = a + b - x1;
while (math.abs(b - a) > tol && iter < k_max) {
iter++;
parser.set('x', x1);
f1 = parser.eval(f);
parser.set('x', x2);
f2 = parser.eval(f);
if (f1 < f2) {
b = x2;
x2 = x1;
x1 = a + b - x1;
} else {
a = x1;
x1 = x2;
x2 = a + b - x2;
}
}
var x = (a + b) / 2;
parser.set('x', x);
var f = parser.eval(f);
var elapsedtime = math.string(math.format(performance.now() - starttime, { notation: 'fixed', precision: 2 })) + " ms";
result = {
x: x,
f_x: f,
iter: iter,
b_a: math.abs(b - a),
elapsed: elapsedtime,
loading: false
};
return result;
};
哦,这是一个棘手的问题。 您将存储的数字没有固定数量。 事实上,它们甚至都不精确!
JavaScript 使用float
它只是一个数字的近似值!
更多关于float
见解在这里: 处理 Javascript 中的浮点精度
阿拉贡关于你的无限问题的更多信息:
它在浮点运算中称为舍入误差。 阅读更多: http : //docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.