检查小数部分后面的位数

时间:2015-07-02 12:22:44

标签: javascript

我需要根据小数部分后面的位数来验证一个数字。

我成功使用以下代码但是,我想知道:

  • 还有另一种更好的方法可以达到相同的效果吗?也许使用一些原生数学函数。

注意:我知道正则表达式,但我正在寻找数学方法。



    var max = 2; // max number of digits after decimal places
        var value = 10.154;
        var s = value.toString().split('.')
        if (s[1].length > max) {
            alert('invalid');
        } else {
            alert('ok');
        }




4 个答案:

答案 0 :(得分:1)

我相信这是最好的方式,因为没有内置的Javascript函数可以实现你想要的。这个解决方案可以在除欧洲大陆之外的任何地方使用,它们使用逗号(,)分隔符作为小数而不是句点(。)

您也可以这样做,但它不适用于负数

var value = 10.154;
value = Math.abs(value);
var decimal = value - Math.floor(value)
var length = decimal.toString().length;

答案 1 :(得分:0)

您可以使用Python的round()函数:

>>> num = 10.542
>>> round(num, 2) == num
False
>>> num = 12.32
>>> round(num, 2) == num
True

>>> num = 12.32
>>> round(num, 2) >= num
True
>>> num = 12.3
>>> round(num, 2) >= num
True
>>> num = 12.324
>>> round(num, 2) >= num
False

答案 2 :(得分:-1)

确定位数时,需要将数字作为字符串处理。因此,您需要做一些与您正在做的事情类似的事情。或者只是使用.toFixed()来消除额外的数字。

答案 3 :(得分:-1)

在计算机中,该数字具有整数浮点十进制数。所以10.154实际上是10.15400000000(语言的准确度达到了什么水平)。

所以,如果你想检查它是否有>你去的最大十进制值: 你将整个值乘以10 ^ x然后将模数1乘以它。如果它不是0,那么你有比你设置的最大值更多的deceimal值。

所以根据你的例子10.154(3个小数点)* 10 ^ 2(你的最大值)= 1015.4 1015.4%1 = 0.4所以“无效”