如何在 JavaScript 中使用货币和语言环境来格式化大数字(由字符串表示)?

2024-07-01

我正在开发一个用 TypeScript 编写的银行应用程序前端。

从后端,我收到:

  • an amount with 2 decimal places (e.g. account balance) in string. This can potentially be a large value - over 15 digits before the decimal point.
    • 其格式为:"32012012012012312.09"
  • 货币代码字符串(例如"USD")

我想使用千位分隔符、货币符号和 NBSP/NNBSP 处理来格式化金额,所有这些都与提供的区域设置相关。最简单的方法是什么?

是否有针对部分问题的潜在解决方案?例如。 1. 格式化数字和 2. 格式化货币符号。

我尝试过的:

  • Intl.NumberFormat- 我喜欢,但是需要一点时间number | bigint(虽然它不会因字符串而崩溃),但它在大十进制数时不再精确 - 例如它格式化32_012_012_012_012_312.09 as 32,012,012,012,012,310.00- 我相信这是 JavaScript 对数字的限制,这就是为什么我正在寻找处理字符串的东西
  • accounting-js - formatMoney具有字符串和数字的函数 - 结果相同,但缺少传递区域设置的功能
  • 寻找有关此主题的其他库和线程 - 我研究了一点 big/bignumber/decimal.js 和 numeric.js,还没有尝试过它们,但我相信它们是关于处理大数字,而不是格式化,甚至是基于区域设置格式化

不确定它是否适用于所有语言/区域设置:

const [main, decimal] = "32_012_012_012_012_312.09".split(".")
const mainNumber = BigInt(main.replaceAll('_', ''))
const decimalNumber = Number.parseFloat('0.' + decimal)

const start = mainNumber.toLocaleString('de-DE') // "32.012.012.012.012.312"
const end = decimalNumber.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }) // "0,09 €"

const result = start + end.substr(1) // "32.012.012.012.012.312,09 €"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中使用货币和语言环境来格式化大数字(由字符串表示)? 的相关文章

  • WKScriptMessageHandler 不会侦听网页上按钮元素上的“onclick”或“click”事件。网页是使用Reactjs开发的

    我正在使用一个WKWebView在 UIViewController 的视图中使用 url 端点显示托管在服务器上的网页 该网页使用Reactjs 这就是我所掌握的有关该网页的所有信息 该代码创建一个 Web 视图并将该 Web 视图作为控
  • React Native 上无法识别的字体系列

    我在使用 React Native 时遇到了一个特殊的错误 在我的里面button js我在做 import Icon from react native vector icons MaterialIcons const icon Icon
  • 角度变量初始化

    我在角度控制器中有一个变量 scope abc 我有 Sails 作为后端 scope abc的初始值可以由后端在生成页面时确定 页面显示给用户后 scope abc 可能会也可能不会被用户更改 我可以让后端生成一个完整的静态页面 并让 A
  • 动态创建特定数量的输入表单元素

    我读过很多关于动态添加字段集的博客和帖子 但它们都给出了非常复杂的答案 我所要求的并没有那么复杂 我的 HTML 代码
  • javascript 中可滚动区域/div 的增量单位?

    在 javascript 中我可以确保我的大 div 垂直滚动 仅以 比方说 16 像素为单位 在 Java 中 这些被称为 增量单位 我在 javascript 中找不到类似的东西 我想确保部分滚动时的某个区域 div 始终是视图 16
  • 如何使用 JavaScript 写入不同的网页?

    我正在尝试从一个网页获取用户输入并将其写入已存在的另一个网页 如果重要的话 所有网页都在同一个域中 我调试 JavaScript 见下文 并看到它正确地迭代 for 循环并构建要写入的正确信息 但它不会将其写入其他网页 不确定我做错了什么
  • 引导崩溃仅切换一次

    我再次在这里拉扯我的头发 所以我已经使用 jsFiddle 进行了引导崩溃 http jsfiddle net rasreye xtPtH 1 http jsfiddle net rasreye xtPtH 1 但是当我添加到我的网站时 它
  • 将元素粘贴到滚动上固定元素的底部?

    基本上 我想要实现的目标是让辅助导航在滚动时与主导航的底部相遇后立即粘在主导航的底部 我仍在学习 jQuery 并且我已经开始抓狂了 编辑 意识到我没有解释到目前为止我已经到了哪里 该类被添加到元素中 但是它没有固定在主标题下方 而是从视口
  • .catch() 的承诺被拒绝,但在 Promise.allSettled 中显示为已履行[重复]

    这个问题在这里已经有答案了 这是问题的简化版本 有一些承诺 但很少 then 链条 以及一个 catch 错误处理块 每个承诺都可能解决或拒绝 因此我使用Promise allSetted根据排列顺序和状态了解哪个承诺失败了 当所有承诺都解
  • 点运算符不获取 Mongoose Document 对象的子属性

    console log gt gt gt gt gt gt user user outputs gt gt gt gt gt gt user username user1 salt 3303187e50a64889b41a7a1c66d3d
  • React 组件使用 useState 渲染两次

    当没有任何东西被用来触发重新渲染组件时 我真的很难弄清楚发生了什么 Events js当我删除组件时 组件渲染两次useState 来自Event js它渲染一次 但我需要保留它 当我使用useEffect 在事件组件内 第四次渲染 我只是
  • 全选/取消全选页面中的复选框

    我看过this http railsforum com viewtopic php id 2151这似乎对我的代码没有影响 我试过了this https stackoverflow com questions 888173 select a
  • 根据特殊性对一组 CSS 选择器进行排序

    如何根据 JS 函数中的 CSS 特殊性对一组 CSS 选择器进行排序 function SortByCssSpecificity input array of css selectors return sorted array of cs
  • Aurelia.io:如何导航到路线

    我有一个包含配置路由的 router js 文件 路线 js export class App configureRouter config router config title Aurelia config map route welc
  • d3.js 雷达图 - 填充线条之间

    我正在尝试在其中两个三角形之间创建填充 例如在红色和绿色三角形之间创建红色填充 有人知道如何做到这一点吗 我见过另一个雷达图的例子 我相信它做了类似的事情 尽管我认为他们使用CSS而不是d3创建填充 使用径向图用 mbostock 的答案解
  • Javascript“悬停时”循环

    任何人都可以帮助我解决这个问题 我有一个按钮 当悬停时会触发一个操作 但我希望只要按钮悬停就重复它 我很感激任何解决方案 无论是在 jquery 还是纯 javascript 中 这是我的代码此时的样子 在 jquery 中 var scr
  • 如何在单击时和用户单击离开时关闭菜单?

    我有以下代码 function document ready function clicker class click function show menu users show jQuery clicker class click fun
  • 从 Verdaccio 软件包版本历史记录中删除版本

    我使用取消发布版本npm unpublish
  • 确定方法是同步还是异步

    在node js中 是否可以 使用函数 确定方法是同步还是异步 我想编写一个执行以下操作的函数 function isSynchonous methodName if the method is synchronous return tru
  • 克隆元件查找器

    在研究可用的同时ElementFinder and ElementArrayFinder方法 我注意到有一个clone method http angular github io protractor api view ElementFin

随机推荐