首页 > 解决方案 > JS 保留以零结尾的小数

问题描述

在 JavaScript 中,是否可以“锁定”十进制数,以保留以零结尾的“浮点”数?

例如,我有 2 个不同的数字,如下所示:(伪代码)

let a = 1.0;
let b = 1.00;
a === b  // true, should be false, because different decimals.
print(a) // "1", should be "1.0"
print(b) // "1", should be "1.00"

(也应该不同于 "true int" 1

我希望它们识别为彼此不同,因为它们最后有不同数量的零。

但是愚蠢的“高效” JavaScript 将它们都向下舍入为“整数” 1,因此它们是相等的。

我知道Number.toFixed(Number)&Number.toPrecision(Number)函数,但要像这样使用它们,我必须首先计算数字的长度,我不能,因为 JavaScript 已经舍入了零。

我也一直在考虑“切断”小数点处的数字并将它们存储在一个数组中......但同样,四舍五入为没有小数点的“int”。

(是的,我知道 JS 中不存在“float”的概念,我在这里用它来区分带小数或不带小数的数字)。

谢谢你的帮助。

标签: javascript

解决方案


要比较 2 个不确定类型的变量,必须在内部转换变量。这就是问题。因为 A 和 B 都是厚度为 1 的集合。因此结果为 True。

但是,如果要比较零的数量,则必须将它们作为字符串进行比较。

所以要么你声明变量

let a = '1.0';
let b = '1.00';

或者您使用

a.toString() === b.toString();

推荐阅读