首页 > 解决方案 > 数字中的前导零和尾随零

问题描述

我正在做一个项目,我需要按以下方式格式化传入的数字:

###.###

但是我注意到了一些我没想到的结果。在我没有收到错误的意义上,以下内容有效:

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')确实有效。当用户想要获得这个值时,将它返回给用户......在一个字符串中......不幸的是。

标签: javascriptnode.jstypescript

解决方案


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


推荐阅读