javascript中可以在内存中存储小数点后的位数
how many digits after decimal point can be stored in memory in javascript
我不理解javascript:中的这个问题
- 它可以容纳小数点后的多少位数
- 小数点后数字的值,它可以保持,是常数还是取决于小数点前的数字?即总数可以存储的位数是固定的,无论是在点之后还是之前
我使用mathjs数字类型作为变量,该变量在某个点存储函数的值。在mathjs的文档中,据说如果该值大于1.7976931348623157e+308,那么它将被转换为无穷大。但我确切地知道,我的函数的值从来都不是这样的,它的评估值要低得多。虽然我在处理后收到的结果是无限的。所以,也许是因为小数点后的位数更大,所以它可以容纳?如果是这样的话,如果我将返回的值四舍五入到它可以容纳的点后的位数,这可以吗?P.S.编号使用的库为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 中处理浮点精度
关于你的无穷大问题的更多信息Aragorn:
浮点运算中的舍入误差。阅读更多:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 重复应用 d3 转换导致的内存泄漏
- 如何显示在给定极限内存在的所有素数
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- 基于订阅的nosql内存数据库
- AngularJS {{ val | number:1 }} 不四舍五入到小数点后 1 位
- 显示:阻止/无html元素,css.not从内存中释放
- jQuery Draggable:内存泄漏
- 元素过多的HTML内存使用情况
- 如何使用Javascript在FireFox中将html从内存动态加载到iframe中
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- Javascript图像数组预加载速度和从内存中删除
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- VBA加载网页并提取内存中的数据
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- new Datamap() 在调用之间保持内存的共享状态
- javascript中可以在内存中存储小数点后的位数