【发布时间】:2017-12-28 17:17:36
【问题描述】:
我想从 JavaScript 中的数字中提取包括其值在内的最低有效数字(这样不会丢失任何信息)
例如
12.0123323 -> 0.0000003
123299000 -> 9000
123001 -> 1
123001.01 -> 0.01
10000000 -> 10000000
等等……
有没有一种巧妙的方法可以做到这一点?
编辑: 正如人们注意到的那样,由于 Javascript:s 处理数字的方式它不能代表 12.0123323,所以我们假设在那些极端情况下它是一个字符串。
【问题讨论】:
-
您需要定义“最低有效位”的含义,例如
12.0123323没有准确表示。也许你可以通过一些合理的舍入规则来做到这一点。我会测试默认的toString是否可以完成这项工作。 -
你试过什么?这是作业吗?
-
@Cheersandhth.-Alf computerhope.com/jargon/l/leastsd.htm 我明白了,嗯,但是当我在控制台中打印时它仍然显示正确的小数位数。
-
@user1506145:Alf 的意思是 JavaScript 中的浮点值 不能 正好具有 12.0123323 的值。这是因为 JavaScript 使用二进制浮点。 JavaScript 中最接近的浮点值可能是 12.012332300000000628870111540891230106353759765625。但是 JavaScript 可能会默认显示“12.0123323”。 (我不记得 JavaScript 默认用于格式化输出数字的内容。)所以你认为 12.0123323 是 not 12.0123323,真实值的最低有效位是 5。
-
@user1506145:这意味着你必须澄清你的问题。如果您有一个数字(表示数字的字符串)而不是浮点数,您可以检查该字符串以查看最低有效数字是什么。如果你有一个浮点数,那么它要么是一个整数,要么它的最低有效位是 5。(当转换为十进制时,所有二进制小数都以 5 结尾。)如果你知道浮点数实际上来自十进制位数有限的数字,可能会找到原始值的最低有效位。
标签: javascript floating-point numbers