【发布时间】:2020-04-22 04:38:38
【问题描述】:
我怀疑这是不可能的,但试一试:
是否可以确定数字的小数点数,无论这些小数点是否为尾随零?
getPrecision(3) // 0
getPrecision(3.2) // 1
getPrecision(2.30) // 2
我已经为前两种情况找到了一些解决方案(包括:How do I get the decimal places of a floating point number in Javascript?),但对于最后一种情况没有。将3.20 转换为字符串会导致"3.2",这没有帮助,而且我几乎没有想法。
【问题讨论】:
-
由于您不能将 3.20 存储为整数并保留最后一个 0,因此您可以始终将该值作为字符串传递。拆分'.'上的字符串并在 '2.30'.split('.')[1].length 上执行字符串长度 - 再次假设您始终将数字作为字符串传递。
-
@Brant 不幸的是,我希望能够处理最初是数字的值。使用字符串我可以按照您的建议进行操作,但是在将数字转换为字符串时,我丢失了最后一个
0。 -
使用什么数据类型来存储数字? Javascript 数字通常是 IEEE 754 64 位二进制浮点数,小数位没有意义。例如,最接近 2.30 的值为 2.29999999999999982236431605997495353221893310546875
-
2.29999999999999982236431605997495353221893310546875 也最接近 2.3、2.30000、2.3000000000000 等。除非您使用保留小数位数的特殊数据类型,否则它们都将表示相同。跨度>
-
从概念上讲,所有有限的
double都可以表示为带有任意数量的尾随零的十进制文本。double q = 5; q/= 2;q可以打印为2.5、2.50、2.500等。
标签: javascript floating-point numbers precision