在 JavaScript 中使用科学计数法的陷阱

2024-05-01

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


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

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

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

我见过普朗克常数 https://en.wikipedia.org/wiki/Planck_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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中使用科学计数法的陷阱 的相关文章

随机推荐

  • 在所有设备上使用 jquery 垂直对齐?

    我发现在不更改其他元素布局的情况下垂直对齐页面上的某些元素是有问题的 这个问题在移动设备上更加严重 如此多的屏幕尺寸 分辨率 纵向 横向 var x window innerHeight myDiv height myDiv css mar
  • Android ArrayList 的 IndexOutOfBoundsException [重复]

    这个问题在这里已经有答案了 我遇到了一个非常烦人的问题 一些代码抛出 IndexOutOfBoundsException 我真的不明白为什么 logcat 指向以下代码的 addTimetableItem 我们将对此进行更多解释 if so
  • 测试涉及打开文件夹/工作区的 VSCode 扩展

    我正在开发一个 VSCode 扩展 它将当前在工作区中打开的文件的路径考虑在内 因此 为了进行可重现的测试 我尝试在 VSCode 中打开测试文件夹本身 然后打开其中的测试文件 如下所示 import as vscode from vsco
  • 学说和大量数据

    我有一个返回约 50k 行的查询 似乎学说将整个结果放入内存中超出了内存限制 128M 我发现节省一些内存的唯一解决方案是 result gt execute array Doctrine Core HYDRATE NONE 但还是超出了极
  • 在运行时拖动窗体上的控件

    我刚刚开始使用 WPF 但我正在尝试添加我的代码 来自 Winforms 使用户能够在运行时将任何控件拖动到他们想要的任何位置 但我似乎无法获取鼠标当前的位置 呃 没有鼠标位置 在 Mouse 事件中 您可以使用 e GetPosition
  • 如何让 CompletionService 知道项目中的其他文档?

    我正在构建一个允许用户定义 编辑和执行 C 脚本的应用程序 定义由方法名称 参数名称数组和方法的内部代码组成 例如 名称 脚本1 参数名称 arg1 arg2 代码 return Arg1 arg1 Arg2 arg2 基于这个定义 可以生
  • 安装 mariadb 包时找不到 mariadb_config [重复]

    这个问题在这里已经有答案了 我尝试在 ubuntu 20 04 上安装 mariadb 软件包 并收到以下消息 Collecting mariadb Using cached mariadb 1 1 3 tar gz 80 kB Prepa
  • StorageFile比IsolatedStorageFile慢50倍

    当我发现在 Lumia 920 上运行的应用程序的 WP7 版本加载数据的速度是在同一设备上运行的 WP8 版本的 2 倍时 我正在对多种算法进行基准测试 以找到加载应用程序中所有数据的最快方法 然后 我编写了以下独立代码来测试 WP8 中
  • python tarfile 中 tar --strip 的等效功能

    我有一个具有以下目录结构的 tar 文件 a b c xyz txt 我想通过忽略父目录 a 来从此 tar 文件中提取文件 提取后 我期望以下目录结构 b c xyz txt 对于 tar 命令 我们可以使用 strip 1 选项 如何在
  • 将 DataTable 打印到 .NET 中的文本框/文本文件

    是否有预定义或 简单 的方法将数据表写入文本文件或 TextBox 控件 使用等宽字体 例如 DataTable Print Column1 Column2 v1 v2 v3 v4 v5 v6 Edit 这是一个初始版本 vb net 如果
  • 在“git pull”我的 Django 项目后重新启动/重新加载 Gunicorn(通过 Upstart)的更好方法

    我正在寻找比sudo restart projectname每次我发出git pull origin master 它会下载我对 Django 项目的最新更改 这restart我相信该命令与 Upstart 有关 我用它来启动 停止我的 G
  • 是否可以在水平面上制作 CSS3 列?

    我想知道是否可以水平生成 CSS3 列 例如 如果我有段落 a b c 和 d 并且我给它们 列数 2 则输出将是 a c b d 我想创建该列 以便输出变为 a b c d 有谁知道使用 css3 列时这是否可能 我希望我的页面是可扩展的
  • 超出最大调用堆栈大小 - Vue.js

    我有一个计算方法 可以让我计算产品的总价和折扣值 并希望获得以下值 总计 折扣 cartTotal var total 0 var discount Math round 0 1 this cartTotal 100 100 this ca
  • Android JSONObject内部多个JSONObject的解析

    我有一个来自服务器的 JSON 字符串 它看起来像这样 categories 0 term id 247 name Content Curation 1 term id 50 name Content Marketing 2 term id
  • Spring Boot 动态重置数据源

    当 Spring 配置文件或自定义数据库属性文件中的数据库名称 密码或主机名等数据库属性发生更改时 我尝试更新 Spring Boot 中的数据源 当属性更改时 应用程序必须通过侦听属性更改来自行更新 一旦数据库配置发生更改 我就使用 Sp
  • Laravel - 带有 join 和 concat 的查询生成器

    我试图从用户表中提取与 users groups 数据透视表中某个组匹配的所有用户 顺便说一句 我使用的是来自 Cartalyst 的 Sentry 2 这可以让所有用户的名字和姓氏连接起来 User select DB raw CONCA
  • 在 SQL Server 中增加一个整数

    菜鸟问题在这里 每次我更改 SQL Server 2008 R2 表中的某个记录时 我都想增加一条 RevisionId 记录 为此 我使用以下语法 UPDATE TheTable SET RevisionId SELECT Revisio
  • assessionid 名称更改

    如果我有一种简单的改变方法 我的生
  • 拉伸图像以填充浏览器窗口的宽度

    我有一个图像 我希望宽度能够填满浏览器窗口 无论窗口大小如何 如何在 HTML 和 CSS 中执行此操作 您可以添加宽度和高度为100 的div 也可以设置图像宽度和高度为100 div img src https picsum photo
  • 在 JavaScript 中使用科学计数法的陷阱

    这个问题是not寻求开发人员代码格式化意见 就我个人而言 我更喜欢在 JS 代码中使用科学计数法 因为我相信它更具可读性 为我 6e8比600000000 话虽这么说 我只是在寻找在 JS 中以科学记数法指定数字的潜在风险和缺点 我在野外并