将字符串转换为浮点数Javascript

时间:2012-11-08 04:55:22

标签: javascript

我在if条件中使用变量时遇到问题。我有三个变量,其中一个是字符串类型,另外两个是Json。这里的settings.DecimalDigits值为2或任何大于2的值。

var controlValue = integer + '.' + mantissa;
controlValue = parseFloat(controlValue).toFixed(settings.DecimalDigits);

整数&尾数将具有某个值,该值作为字符串存储在controlValue中。然后将 controlValue 与IF条件中的其他两个变量( settings.MaxValue& settings.MinValue )进行比较,但是它不通过条件,因为它的类型是字符串类型

if (controlValue > settings.MaxValue)
                controlValue = settings.MaxValue;

            if (controlValue < settings.MinValue)
                controlValue = settings.MinValue;

在我的解析中,所有三个变量都有浮动类型的三个值

controlValue = 123.23或123.00
settings.MaxValue = 99.99
settings.MinValue = -99.99
 请帮助,以便解析通过 IF条件

2 个答案:

答案 0 :(得分:2)

.toFixed()将您的号码变回字符串。如果你想再次回到一个数字,那么你需要在它上面使用parseFloat。可能有更好的方法来实现这一点,但是在现有代码的基础上,您可以通过再次调用controlValue来使if一个可以在parseFloat()语句中使用的数字:

var controlValue = integer + '.' + mantissa;
controlValue = parseFloat(parseFloat(controlValue).toFixed(settings.DecimalDigits));

仅供参考,将数字完全作为一个数字来处理可能更有意义,而不是多次来回处理字符串:

var controlValue = parseFloat(integer + '.' + mantissa);
var filter = Math.pow(10, settings.DecimalDigits);
controlValue = Math.round(controlValue * filter) / filter;

或者甚至只是这个:

var controlValue = parseFloat(integer + '.' + mantissa.toString().substr(0, settings.DecimalDigits));

答案 1 :(得分:1)

jfriend00's answer帮我解决了问题。解决方案如下:

            var controlValue = e.target.value; //get value from input
            controlValue = Number(controlValue); //Converting the string to number

            // Number format parses through if condition
            if (controlValue > settings.MaxValue)
                controlValue = Number(settings.MaxValue);
            if (controlValue < settings.MinValue)
                controlValue = Number(settings.MinValue);

            // if the value is having a mantissa 00. It will be rejected by Number() function. So next line its converted again to string format using .toFixed() function. 

            var controlValue = controlValue.toFixed(settings.DecimalDigits);

            // Splitting the value into two parts integer and mantissa 
            integer = controlValue.split('.')[0];
            if (typeof integer == 'undefined' || integer == null || integer == "" || isNaN(integer))
                integer = 0;

           // settings.DecimalDigits is the variable to set any default number of mantissa required to appear. 
            mantissa = controlValue.split('.')[1];
            if (typeof mantissa == 'undefined') {
                mantissa = "";
                for (i = 0; i < settings.DecimalDigits; i++)
                    mantissa += '0';
            }

            // Finally you have the result
            controlValue = integer + '.' + mantissa;