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