【发布时间】:2020-03-10 11:13:15
【问题描述】:
在 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"
(也应该不同于“真正的 int”1)
我希望它们识别为彼此不同,因为它们最后有不同数量的零。
但愚蠢的“高效”JavaScript 将它们都向下舍入为“整数”1,因此它们是相等的。
我知道 Number.toFixed(Number) 和 Number.toPrecision(Number) 函数,但要像这样使用它们,我必须首先计算数字的长度,因为 JavaScript 已经舍入了零。
我也一直在考虑“切掉”小数点处的数字并将它们存储在一个数组中......但同样,四舍五入为没有小数点的“int”。
(是的,我知道 JS 中不存在“float”的概念,我这里用它来区分带小数和不带小数的数字)。
感谢您的帮助。
【问题讨论】:
-
为什么不将其保留为字符串?
-
因为:"1.0" + "1.00" = "1.01.00" 这没有意义。
-
那么如果是整数,1.0+1.00是多少? 2.0 或 2.00
-
javascript为什么要保留前导零?它们只是计算器内部的开/关位,没有 base10 长度的概念。你看到的只是对人类友好的表示,所以你的问题没有意义
-
@SebastianNorr 数字没有长度,也没有四舍五入发生。
var a = 1.00, b = 0x01;甚至var c = 6/(2*3);是完全相同的值。仅仅因为您以不同的方式编写它们并不会改变数字。如果您想要某种格式,则需要自己处理;数字根本不包含它。
标签: javascript