javascript - 数字中的前导零和尾随零
问题描述
我正在做一个项目,我需要按以下方式格式化传入的数字:
###.###
但是我注意到了一些我没想到的结果。在我没有收到错误的意义上,以下内容有效:
console.log(07);
// or in my case:
console.log(007);
当然,它不会在值本身中保留“00”,因为该值实际上是 7。
以下情况也是如此:
console.log(7.0);
// or in my case:
console.log(7.000);
JavaScript 理解我在做什么,但最终实际值为 7,这可以通过以下方式证明:
const leadingValue = 007;
const trailingValue = 7.00;
console.log(leadingValue, trailingValue); // both are exactly 7
但我觉得好奇的是:当我将这两者结合起来时,我得到了一个语法错误:
// but not this:
console.log(007.000);
1)有人可以解释为什么这不起作用吗?
我正在尝试找到一种解决方案,在不使用字符串的情况下以精确的精度存储数字/浮点数。
2) JS/NodeJS 甚至 TypeScript 中是否有任何方法可以在不使用字符串的情况下执行此操作?
我目前想要做的是接收输入,扫描格式并将其存储为单独的属性,然后解析传入的值,因为parseInt('007.000')
确实有效。当用户想要获得这个值时,将它返回给用户......在一个字符串中......不幸的是。
解决方案
1)007.000
是一个语法错误,因为 007 是一个八进制整数文字,然后您要在其上附加一个浮点部分。(试试console.log(010)
. 这会打印 8。)
2) 以下是使用Intl.NumberFormat实现格式化的方法...
var myformat = new Intl.NumberFormat('en-US', {
minimumIntegerDigits: 3,
minimumFractionDigits: 3
});
console.log(myformat.format(7)); // prints 007.000
推荐阅读
- angular - 如何加快 Angular 6 的构建速度?
- django - Django - 如何将值从现有 HTML 表单传递到列表视图
- c# - 在 ASP.NET MVC 5 控制器中接收 json 数据
- mysql - 如何在mysql中跳转到下一个id
- ajax - 使用带有 Nuxt js 的 axios 从 Directions API 获取数据时的跨域读取阻塞 (CORB)
- c++ - 查找数组中两个给定数字的出现次数
- angularjs - 如何在谷歌实例上安装 node.js 和 angular.js
- javascript - 当测试用python(pytest)编写时,有没有办法让nodejs代码覆盖?
- android - 我的 ListView 在 android 模拟器中不可见,我使用了线性布局
- linux - 为什么 gcc 列出了与我实际的 cpu 架构不同的行进?