为什么要在 JavaScript 方程式前面加号与 toFixed
Why plus sign in front of JavaScript equation with toFixed?
我只是在浏览粒子的源代码.js并遇到了以下代码行:
this.speed.x = +((-options.maxSpeedX / 2) +
(Math.random() * options.maxSpeedX)).toFixed(2);
这行代码也可以在这里找到。
现在,表达式开头的 + 号在等式中没有区别。 例如
(-2 + 5) = 3
现在。。。
+(-2 + 5) = 3
再比如:
(-5 + 2) = -3
现在。。
+(-5 + 2) = -3
为什么表达式开头的加号对等式的结果没有影响?
你的代码基本上是
x = +someNumber.toFixed(2);
这是
x = +(someNumber.toFixed(2));
因为函数调用的优先级高于 + 运算符。
这使得
x = +(someNumberFormattedAsARoundedString);
应用一元加号运算符会将字符串转换回数字。最终结果是初始someNumber
的四舍五入。
在您链接到的这种特定情况下,由于不知道什么是IEEE754浮点数,这看起来像是不好的做法。看起来作者试图获得固定精度的数字,从而混淆了数字存储及其表示(即格式)。
.toFixed()
返回一个字符串。您需要将其转换为数字。一元加 +
运算符用于将字符串转换/转换为数字。
返回
numObj 的字符串表示形式,不使用指数表示法,并且在小数位后具有正好的数字。如有必要,数字将四舍五入,小数部分将在必要时用零填充,以便其具有指定的长度。如果 numObj 大于 1e+21,则此方法只需调用 Number.prototype.toString() 并以指数表示法返回一个字符串。
在结果已经是数字的情况下,不需要它。例如,+(-2 + 5)
.
但是,在下面的操作中,它是必需的。
this.speed.x = +((-options.maxSpeedX / 2) +
(Math.random() * options.maxSpeedX)).toFixed(2);
相关文章:
- 如何在下面的ES6循环中获得前面的文本
- 下拉列表在使用z索引放置在前面后停止工作
- setTimeout函数能否在其前面的代码执行之前激发
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- toFixed and replace dons'这似乎奏效了
- 如何获得前面有“”的字符;add_”;
- 如何在AngularJS URL中的hashtag(#)前面加上字符串
- 在Javascript中,对于货币来说,是toFixed()足够精确
- Node.js-等待process.exit()在前面的代码完成后执行
- 将一个元素放在具有相同z索引的其他元素前面
- 在Javascript中,变量前面的+运算符是什么
- jQuery在.each中查找前面的元素标签
- FabricJS-组选择使对象在选择时处于最前面
- Regex查找前面没有特定字符的字符
- toFixed javascript函数给出奇怪的结果
- 如何提取与前面带句点(.)的同一字符串匹配的字符串?(仅使用正则表达式)
- jQuery检查字符串前面是否有其他字母
- 在网页上执行绝对路径的所有点击前面加上网址
- 拉斐尔JS:把布景放在前面
- 为什么要在 JavaScript 方程式前面加号与 toFixed