gpt4 book ai didi

javascript - 在 JavaScript 中使用科学记数法的陷阱

转载 作者:数据小太阳 更新时间:2023-10-29 03:54:47 24 4
gpt4 key购买 nike

这个问题不是寻求开发者代码格式的意见。就个人而言,我更喜欢在我的 JS 代码中使用科学记数法,因为我相信它更具可读性。对我来说,6e8600000000 更具可读性。话虽如此,我只是在寻找在 JS 中以科学记数法指定数字的潜在风险和缺点。我不经常在野外看到它,想知道是否有技术原因,或者仅仅是因为开发人员的要求。

最佳答案

你看不到科学记数法“经常在野外”,因为在 JS 中实际输入的唯一数字往往是常量:

  • 以代码为中心的常量(例如枚举和级别)往往很小。
  • 物理/数学常数(例如 π 或 e)往往具有高度特异性。

这些都没有从科学记数法中获益太多。

我看过Plank's constant “在野外”为:

const h = 6.62607004e-34;
console.log('Plank', h);

另一个通常有意义的地方是时间限制,例如一天中的毫秒数 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",期待 2e4,但得到 2e6,这要归功于交换千位和小数点分隔符的不变数字格式)。

我要补充一点,对于小数字,JS 无论如何都会默认输出该语法,但在一定程度上避免大数字(因浏览器而异):

console.log('Very small', 1234 / 100000000000)
console.log('Large, but still full in some browsers', 1e17 * 1234)
console.log('Large, scientific', 1e35 * 1234)

关于javascript - 在 JavaScript 中使用科学记数法的陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com