Javascript 数字的比例和精度

Javascript 数字的比例和精度,javascript,jquery,Javascript,Jquery,我希望从以下示例中的数字中获得比例和精度 var x=1234.567 我没有看到任何内置的.scale或.precision函数,我也不确定正确的方法是什么 var x = 1234.567; var parts = x.toString().split('.'); parts[0].length; // output: 4 for 1234 parts[1].length; // output: 3 for 567 注 Javascript有一个方法,用于指定长度的数字 例如: va

我希望从以下示例中的数字中获得比例和精度

var x=1234.567

我没有看到任何内置的
.scale
.precision
函数,我也不确定正确的方法是什么

var x = 1234.567;

var parts = x.toString().split('.');

parts[0].length; // output: 4 for 1234

parts[1].length; // output: 3 for 567
注 Javascript有一个方法,用于指定长度的数字

例如:

var x = 1234.567;

x.toPrecision(4); // output: 1234

x.toPrecision(5); // output: 1234.5

x.toPrecision(7); // output: 1234.56
但是

等等

据评论 是否有方法检查字符串是否包含

var x = 1234.567

x.toString().indexOf('.'); // output: 4
.indexof()
返回目标的第一个索引else
-1

另一个高级解决方案(如果我正确理解您所说的比例和精度):

如果数字不是浮点值,则函数返回
null

,您可以使用:

var x = 1234.56780123;

x.toFixed(2); // output: 1234.56
x.toFixed(3); // output: 1234.568
x.toFixed(4); // output: 1234.5680

这些比例和精度是多少?你指的是点两边的数字吗?转换成字符串,然后拆分,看看字符串的长度。这对浮点有意义吗?考虑<代码> 0.1 + 0.1 + 0.1 < /代码>。您会期望它是
0.3
。其实不是。它是
0.300000000004
。突然,您的精度提高了。@Eric他不使用这些数字进行计算。@VisioN:即使如此,这里也存在浮点问题。如果您不打算使用数字进行计算,请将它们存储为字符串!精度应该是整个长度减去。,我假设一旦你把它转换成一个字符串,你就会删除。知道长度了吗?不过,这是一个很好的方法,可以让你在之前和之后都能获得成功。是否有一种好方法可以确定字符串是否包含。在运行脚本之前?当一个数字包含多个小数点时,您会推荐什么?例如123.456.7,我看到当您看到小数点时,您正在减去-1的精度,这将导致真正的精度长度关闭。我只是想知道你的想法。@George一个数字怎么可能包含超过一个小数点?@George在JavaScript(以及我所知道的其他编程语言)中不可能有一个包含两个或更多小数点的数字。我个人认为这个解决方案很好,正是我所需要的,尽管有这么多评论。。。
function getScaleAndPrecision(x) {
    x = parseFloat(x) + "";
    var scale = x.indexOf(".");
    if (scale == -1) return null;
    return {
        scale : scale,
        precision : x.length - scale - 1
    };
}

var res = getScaleAndPrecision(1234.567);

res.scale;       // for scale
res.precision;   // for precision
var x = 1234.56780123;

x.toFixed(2); // output: 1234.56
x.toFixed(3); // output: 1234.568
x.toFixed(4); // output: 1234.5680