我正在尝试确定一个表示十进制数的字符串是否可以精确地表示为double。我特别希望有一个JavaScript解决方案,但任何方法都可以(我可以移植代码)。
我可以使用
我可以使用
parseFloat ,转换成字符串,然后看看该字符串是否与输入字符串匹配,但我想知道是否有更好/更快的方法来实现这一点。我想象中具有IEEE浮点标准深入了解的人会有更好的方法来解决这个问题,但那个人不是我。
parseFloat("Infinity") === Infinity
。但如果你的意思是我的方法在那种情况下不起作用,那么说得好,但这与我的问题并不相关,因为我询问的是表示为字符串的十进制数,而不是JavaScript认为是数字的东西。 - B T0.1
不能完全表示,但是parseFloat("0.1").toString() == "0.1"
是正确的。因为如我在上面的评论中所提到的那样,如果要将IEEE 754二进制浮点数输出为字符串,则标准规则是仅输出足以可靠区分其与相邻可表示值的位数。 - T.J. Crowder