如何从字符串中获取一定数量的数字?
例如:
The random number = 0.87934738749
我需要的只是0.87没有舍入,只是被截断。
唯一需要注意的是,我想使用RegExp执行此操作,我知道如何使用Math.pow和Math.floor以及其他方法执行此操作,我正在尝试更好地理解正则表达式。
到目前为止,我被引导到令人困惑的例子,RegExp不是我的东西,长度至少是2位数,但在某些情况下,它需要是3位数,这就是我忘了添加到我原来的交。
所以尝试: -
x = String(numb).match( new RegExp("/\d+(\.\d{1,"+p+"})?/") )[0];
错误Cannot read property '0' of null
或null
返回,如果我将[0]放在最后。
答案 0 :(得分:0)
从上面关于精度的评论(三位数的情况),我认为正确答案可以是这个:
var rndm = 0.87934738749;
var precision = 3;
x = String(rndm).match(new RegExp("(?=(\\d+\\.\\d{2,"+precision+"}))"));
alert(x);
精度为4的示例:https://jsfiddle.net/edz4crc8/
注意x将包含结果(在上面的情况下为0.879),正则表达式实际上是:
(?=(\d+\.\d{2,number}))
.
(如果需要,您也可以添加逗号规则)你的错误可能主要是逃避正则表达式本身,但无论如何,在我看来,最好使用断言来解决这种情况。
答案 1 :(得分:0)
这听起来好像使用toFixed()
实现更简单:
var r = 0.8793...
var prec = 3
r.toFixed(prec) // => "0.879"
但请注意,它与正则表达式不同,因为它涉及舍入。例如:
var r = 0.8796...
r.toFixed(prec) // => "0.880"
编辑:好的,误读了你说不想想要回合的部分。漠视。我把它留在这里,万一有人想要四舍五入。