这个问题不寻求开发者代码格式化意见。就个人而言,我更喜欢在我的JS代码中使用科学记数法,因为我相信它更具可读性。对我而言,6e8
比600000000
更具可读性。话虽这么说,我只是在寻找JS中用科学记数法指定数字的潜在风险和缺点。我不经常在野外看到它,并且想知道是否有技术推理,或仅仅是因为开发人员的druthers。
答案 0 :(得分:2)
你没有看到科学记数法“经常在野外”,因为实际上在JS中输入的唯一数字往往是常量:
这些都不会从科学记法中获益太多。
我在野外看到Plank's constant'为:
const h = 6.62607004e-34;
console.log('Plank', h);
通常有意义的另一个地方是时间限制,例如一天中ms的数量为864e5
。例如:
function addDaysToDate(date, days) {
if (days === 0)
return date;
date.setTime(864e5 * days + date.valueOf());
return date;
}
const now = new Date();
const thisTimeTomorrow = addDaysToDate(now, 1);
console.log('This time tomorrow', thisTimeTomorrow);
我认为没有任何技术理由不使用这种表示法,更多的是开发人员完全避免硬编码。
我认为没有任何风险。你可能不得不小心字符串中的数字,但是如果你这样做,那么这个语法比数字本地化(例如DE用户输入"20.000,00"
,期待{{1})要小得多。由于不变数字格式交换千位和小数分隔符而获得2e4
。
我想补充一点,对于小数字,JS默认会输出该语法,但是对于一个点(由浏览器而异),可以避免大量数据:
2e6
答案 1 :(得分:1)
来自O. R. Mapper的this问题:
人类用户不是唯一想要阅读数字的人。它似乎 遇到翻译时D3会抛出异常 包含科学记数法坐标的转换
此外,如果您想要更改字符串表示形式,而不是更改源代码中文字的外观,您必须小心序列化/存储数据。
此外,根据经验,您通常可以拥有大数字,其重要性在于其个人数字,如ID或电话号码。在这种情况下,将这些数字减少到科学记数法会损害可读性。
答案 2 :(得分:1)
E-notation表示应该乘以10的数字 给定的力量。
不是科学的指数表示法。一个陷阱是e
“在JavaScript中以”“的力量提升的十倍不是The number e
自然对数的基础,在浏览器中表示为Math.E
。对于熟悉数学常数e
的人来说,JavaScript e
具有完全不同的含义。 6 * Math.pow(10, 8)
返回预期结果,但不包括使用JavaScript工件e
。
虽然E代表指数,但通常会引用符号 作为(科学)电子符号而不是(科学)指数 符号。使用E-notation有助于数据输入和可读性 在文本通信中,因为它最小化击键,避免减少 字体大小,并提供更简单,更简洁的显示,但它是 在出版物中不鼓励。 Submission Guidelines for Authors: HPS 2010 Midyear Proceedings