Intl.NumberFormat() 中是否有一个选项可以自动转换为更大的单位?

2023-11-22

我想要Intl.NumberFormat()根据通用规则自动在较小单位和较大单位之间进行转换。 IE。给定的数字应根据数字的大小在输出中转换为厘米、米和公里之间的值。

代码示例:

const bytes = 1000000;
const transferSpeed = new Intl.NumberFormat('en-US',
  {style: 'unit', unit: 'byte-per-second', unitDisplay: 'narrow'}).format(bytes);
console.log(transferSpeed);

const days = 365;
const timespan = new Intl.NumberFormat('en-US',
  {style: 'unit', unit: 'day', unitDisplay: 'long'}).format(days);
console.log(timespan);

这两个调用的输出是:

1,000,000B/秒
365天

在这种情况下,我希望这样:

1MB/s
1 year

人们可能想要定义何时转换为下一个更大单位的阈值。因此,一旦达到确切的值,转换就应该发生,但也应该更早,比如下一个更大单位的 90%。鉴于上面的示例,输出将是这样的:

0.9MB/s
0.9年

API 是否有配置选项可以做到这一点?


不完全是问题的完整答案,但我想我把它放在这里以防它可以帮助任何人。

接近这个的东西实际上是可能的国际数字格式,但它有一些局限性。例如,如果您想格式化字节值,您可以:

  1. Use the compact符号。
  2. Use unit作为您的风格,并提供byte为单位。
  3. Set narrow as unitDisplay.

使用这些选项,格式化程序将正确地从一种单位转换为另一种单位,并且由于unitDisplay值,它将按照您的预期显示测量单位。

这当然只适合少数人使用支持单位这是有道理的,它限制了你将单位放在价值旁边,尽管这通常是你想要的。浏览器支持如果您需要针对较旧的平台,也可能是一个问题。

这是一个示例。

const byteValueNumberFormatter = Intl.NumberFormat("en", {
  notation: "compact",
  style: "unit",
  unit: "byte",
  unitDisplay: "narrow",
});

console.log(byteValueNumberFormatter.format(10));

console.log(byteValueNumberFormatter.format(200000));

console.log(byteValueNumberFormatter.format(50000000));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Intl.NumberFormat() 中是否有一个选项可以自动转换为更大的单位? 的相关文章

  • 在 Angular 中使用 Vue 组件

    我有一个用 Vue 构建的项目 我想在 Angular 应用程序中重用 Vue 应用程序中的组件 这样我就不必从头开始重建每个组件 我在medium上看到了这个教程 如何在 Angular 应用程序中使用 Vue 2 0 组件 https
  • 我如何在 AngularJS 中监听点击并按住的情况?

    我制作了一个时间计数器 您可以通过单击按钮来增加或减少时间 然而 我希望当我单击并按住按钮时 时间的价值会不断攀升 所以目前如果你看到我的Plunkr http plnkr co edit BxX9x5zYFMXVqt5JsN1F p pr
  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • Python打开文件unicode错误

    我正在学习如何在 Python 中打开文件 但是当我输入要打开的文件的路径时 会弹出一个窗口 显示 unicode 错误 unicodeescape 编解码器无法解码位置 2 3 中的字节 被截断的 UXXXXXXX 转义 它突出显示了我的
  • 异步循环函数中的 Angular Promise

    我有一个上传功能 它循环遍历选定的文件并将它们添加到服务器文件系统上 上传工厂 app factory uploadFactory function upload q var uploadFactory var image Models I
  • 如何在Ubuntu中将OpenSSL从1.0.2g升级到1.1.0g并让python识别新的OpenSSL

    I have Ubuntu 16 04 它有OpenSSL 1 0 2g 我需要使用OpenSSL 1 1 0g 请注意 我的另一台机器上安装了 OpenSSL 1 1 0gUbuntu 18 但我需要运行一个Python程序Ubuntu
  • 从 .XSD 文件生成 Java 类...?

    我有一个巨大的 QuickBooks SDK XSD 架构文件 它定义了我可以从 QuickBooks 发送 接收的 XML 请求 响应 我希望能够轻松地从这些 XSD 文件生成 Java 类 然后我可以使用这些类将 XML 编组为 Jav
  • 使用 dplyr group_by 模拟 split():返回数据帧列表

    我有一个令人窒息的庞大数据集split 在 R 中 我能够使用dplyrgroup by 无论如何这是首选方式 但我无法坚持结果grouped df作为数据帧列表 我的连续处理步骤所需的格式 我需要强制SpatialDataFrames和类
  • 热代码使用Maven部署tomcat

    我有一个使用 Maven 构建的 Web 应用程序 它以不同项目的形式构建 这些项目相互依赖 域 dao 服务等 我在每个项目中运行 eclipse eclipse 来配置我的 eclipse 环境 所以现在我在 eclipse 中有多个项
  • Facebook - 永久用户访问令牌

    我的公司有一个公司 Facebook 帐户 他们在不同的相册中发布活动照片 我的要求是从Facebook相册中获取所有照片并显示在我们的公司网站上 我能够获取照片 但用户访问令牌的有效期只有 60 天 这意味着每隔两个月我就必须登录公司的企
  • 如何避免 Kotlin 中的 Lateinit 字段部分覆盖

    我有一个用 Kotlin 编写的 Android 服务 我使用 Guice 注入它 它有不能为空的 Lateinit 字段 但它们必须是 Lateinit 因为我不能使用构造函数注入 围绕这些线的一些东西 class VibrationSe
  • JUnit5 - 如何在 AfterTestExecutionCallback 中获取测试结果

    我编写 JUnit5 扩展 但我找不到如何获得测试结果的方法 扩展看起来像这样 import org junit jupiter api extension AfterTestExecutionCallback import org jun
  • 单个线程池与每个任务一个线程池

    我想使用 Java 中的并发性向在线 API 发出请求 下载并解析响应文档 并将结果数据加载到数据库中 拥有一个线程池 其中每个线程都进行请求 解析和加载 这是标准做法吗 换句话说 只有一个类实现Runnable 或者 拥有三个不同的线程池
  • 在android中什么可能会导致这个错误?

    我正在开发一个 Android 应用程序 启动该应用程序 2 5 分钟后出现此错误 这是什么 05 26 18 51 08 137 INFO DEBUG 2894 05 26 18 51 08 137 INFO DEBUG 2894 Bui
  • 如何在邮件内容中使用
    标签? [复制]

    这个问题在这里已经有答案了 to email protected subject Instant estimate message message b Name b name r n b Email b email r n b Mobile
  • 如何使用 Selenium 获取 WebElement 文本

    请参阅以下元素 div class success div
  • WCF NetTCP 通过 Internet 绑定

    我有个问题 我想提供一系列用WCF做的服务 使用服务的客户端也是带有 WCF 的 NET 我想要高速访问 快速响应 传输中小型数据契约 主要 net基本数据类型 分发将通过互联网进行 我正在寻找可靠性 可用性和基本安全性 我不想使用 WsH
  • 0 和 1 之间的浮点数正则表达式

    我正在尝试验证浮点数的输入 其最大值是1 0最小值是0 Min 0 Max 1 可能的值 0 1 0 99 0 365 我怎样才能用正则表达式成功 作为 javascript 正则表达式文字 0 d 1 0
  • '无效更新:第 0 节中的行数无效

    我已阅读所有与此相关的帖子 但仍然有错误 Invalid update invalid number of rows in section 0 The number of rows contained in an existing sect
  • Java中如何将字符串转换为Time对象?

    我的字符串值为晚上 08 03 10 我想把它转换成time 我怎样才能在Java中做到这一点 String str 08 03 10 pm DateFormat formatter new SimpleDateFormat hh mm s
  • Javascript 正则表达式 URL 匹配

    到目前为止我有这个 chrome tabs getSelected null function tab var title tab title var btn a href title a if tab url match http www
  • 在JS中添加/减去时间

    最近在玩JS 发现了一些有趣的东西 这就是我在 chrome 控制台中写入的内容 today new Date gt Mon Apr 29 2013 13 06 01 GMT 0200 CEST DAY 1000 3600 24 gt 86
  • Intl.NumberFormat() 中是否有一个选项可以自动转换为更大的单位?

    我想要Intl NumberFormat 根据通用规则自动在较小单位和较大单位之间进行转换 IE 给定的数字应根据数字的大小在输出中转换为厘米 米和公里之间的值 代码示例 const bytes 1000000 const transfer