JavaScript中科学计数法转化为数值字符串形式 (www.css88.com)

【简介】

JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。我以0.0011BTC 价格买入 0.0002CZR 计算出了的金额是 0.00000022BTC,而 JavaScript 计算出来的金额是 2.2e-7 。值是对的,只是用了科学计数法,也是数值类型。但是问题来了,一般用户用户看不懂 2.2e-7,那么就把它转换成 0.00000022 吧。然而问题了,我用尽办法,怎么样都无法将 2.2e-7 转换成直观的 0.00000022。或许你会嘲笑我,告诉我直接用 .toFixed() 方法。但是新问题又来了, .toFixed() 会保留足够的小数位,比如:2e-7.toFixed(8) 得到的值是 0.00000020,2e2.toFixed(8)得到的值是 200.00000000。最后的 0 让我感到多余…

点击查看原文 >>

@技术头条 2018-06-28 12:36 / 原作者微博:@愚人码头 / 0个评论
赞过的人: @技术头条
要不要再学学下面的文章?
4个强大的JavaScript运算符 (mp.weixin.qq.com)
你有没有花一个下午的时间阅读 Mozilla 文档?如果有,你会发现网上有很多 JS 资料,这使我们很容易忽略那些更为基础的 JS 运算符。
这些运算符不常见但很强大!在语法上看起来很相似,作用却不一样,一定要仔细阅读。
by @code小生 2022-06-19 13:31 查看详情
Airbnb是如何从JavaScript迁移到TypeScript的? (mp.weixin.qq.com)
TypeScript 是 Airbnb 前端开发的官方语言。但是,采用 TypeScript 的过程和迁移一个包含成千上万个 JavaScript 文件的成熟代码库不是一夕发生的。TypeScript 的采用经过了最初提案、多数团队采用、测试阶段,最后落地为 Airbnb 前端开发的官方语言。
by @code小生 2022-05-30 21:06 查看详情
2021年最佳JavaScript框架排名 (mp.weixin.qq.com)
据 Stackoverflow 的 2021 年开发者调查,JavaScript 已连续第八年成为使用最多的语言,有 67.7% 的受访者选择它。之所以如此受欢迎,主要是因为 JavaScript 是通用的,可以用于前端和后端开发和测试网站或 Web 应用程序。
by @code小生 2022-03-13 23:30 查看详情
9个超实用的JavaScript原生插件工具 (mp.weixin.qq.com)
对浏览器中运行的任何内容进行快速可靠的测试。


Cypress允许你创建可以与单击按钮交互的测试,填写表格,这个很好地支持定期更新。
唯一的缺点是你会发现Cypress的学习曲线有点宽,因为它需要一些时间,这取决于你之前测试JavaScript应用程序的知识。
此外,另一个主要问题是它目前不支持Safari。
by @code小生 2022-03-06 21:46 查看详情
无需刷新即可检测 JavaScript 中的 URL 更改 (forum.lovejade.cn)
如何为 Flarum 论坛添加 medium-zoom(用于缩放图像的 JavaScript 库,如 Medium)呢?本篇文章,在于分析借助 MutationObserver 函数,从而为 SPA 应用,添加些特殊处理,如添加 medium-zoom 动画。
by @杨琼璞 2021-09-27 19:19 查看详情
用英雄联盟的方式讲解JavaScript设计模式 (mp.weixin.qq.com)
在JavaScript里,构造函数通常是认为用来实现实例的特殊的构造函数。通过new关键字来调用定义的构造函数,你可以告诉JavaScript你要创建一个新对象并且新对象的成员声明都是构造函数里定义的。在构造函数内部,this关键字引用的是新创建的对象。
by @code小生 2021-09-12 12:59 查看详情
更快学习JavaScript的6个思维技巧 (mp.weixin.qq.com)
很多人学习JavaScript,问的第一个问题往往是“我应该使用哪个框架?”。但是,如果你还没有掌握最最基础的JavaScript,那这显然是一个错误的问题。你将你所有的时间用来研究不同的框架,于是,你开始停滞不前。
by @code小生 2021-08-01 19:00 查看详情
JavaScript代理的惊人力量 (mp.weixin.qq.com)
释什么是Proxy的时候,说它可以创建一个Proxy,这有点搞笑。当然,他们并没有说错,但是我们可以简化这个说法,让它更加友好。
by @code小生 2021-07-25 21:59 查看详情
2020年JavaScript状态调研报告小结 (mp.weixin.qq.com)
今年的调查覆盖率了 137 个国家的 23,765 个人,大多数被调研者来自美国或西欧。报告地址:https://2020.stateofjs.com/en-US/。
by @code小生 2021-07-04 23:56 查看详情
给 JavaScript 插上多线程的翅膀 —— Web Worker 的 Promise 化实践 (www.alloyteam.com)
众所周知,JavaScript 这门语言的一大特点就是单线程,即同一时间只能同步处理一件事情,这也是这门语言衍生出的 nodeJS 被各后端大佬诟病的很重要的一点。


然而,JavaScript 在设计之初,其实是故意被设计成单线程语言的,这是由于它当时的主要用途决定的。

JavaScript 最初的设计初衷是完成页面与用户的交互,操作 DOM 或者 BOM 元素,此时如果一味地追求效率使用多线程的话,会带来资源抢占,数据同步等等问题,因此必须规定,同一时间只有一个线程能直接操作页面元素,以保证系统的稳定性以及安全性。

尽管如此,但是 JavaScript 并不是只能线性处理任务。JS 拥有消息队列和事件循环机制,通过异步处理消息的能力来实现并发。在高 I/O 型并发事务处理的过程中,由于不需要手动生成与销毁线程以及占用额外管理线程的空间,性能表现及为优异。因此,nodeJS 作为 JavaScript 在服务端的探索者,在处理高并发网络请求的优势极为明显。

尽管 JavaScript 通过异步机制完美解决了高 I/O 性能的问题,但 JavaScript 单线程执行的本质还是没有变的。因此缺点就显而易见了,那就是处理 CPU 密集型的事务时没有办法充分调动现代多核心多线程机器的运算资源。

在现代大型前端项目中,随着代码的复杂程度越来越高,本地的计算型事务也在变得繁重,而运行在单线程下 JS 项目必定会忙于处理计算而无暇顾及用户接下来的频繁操作,造成卡顿等不太好的用户体验,更严重的情况是,当计算型事务过多时还有可能因为资源被占满带来网页无响应的卡死现象。因此,Web 项目的本地多线程运算能力势在必行,由此,Web Worker 应运而生了。
by @技术头条 2021-05-28 08:27 查看详情