javascript - 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”的概念,我在这里用它来区分带小数或不带小数的数字)。
谢谢你的帮助。
解决方案
要比较 2 个不确定类型的变量,必须在内部转换变量。这就是问题。因为 A 和 B 都是厚度为 1 的集合。因此结果为 True。
但是,如果要比较零的数量,则必须将它们作为字符串进行比较。
所以要么你声明变量
let a = '1.0';
let b = '1.00';
或者您使用
a.toString() === b.toString();
推荐阅读
- rust - Rust bindgen 和 char 大于 8 位的系统/编译器
- r - 使用 fviz_famd_ind 中的“habillage”来可视化 FAMD 结果
- linux - bash - 如何创建磁盘/分区菜单?
- flutter - 如何下载文件以供将来离线查看
- javascript - React js表单验证无法正常工作
- android - VideoCall活动蓝牙audioManager不发送声音
- javascript - 用js添加和删除函数onclick
- asp.net-core - 将 HttpMessageHandler 添加到 Blazor Spinner 的 startup.cs 中的所有调用
- javascript - For循环期间忽略TypeError
- jsonnet - 如何替换 Jsonnet 字符串中的部分字符串 BEHIND 搜索条件?