将字符串转换为浮点数Javascript

将字符串转换为浮点数Javascript,javascript,Javascript,我在if条件下使用变量时遇到问题。我有三个变量,其中一个是字符串类型,另外两个是Json。此处的settings.DecimalDigits值为2或大于2的任何值 var controlValue = integer + '.' + mantissa; controlValue = parseFloat(controlValue).toFixed(settings.DecimalDigits); 整数&尾数将有一个特定的值,该值作为字符串存储在controlValue中controlValue

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

var controlValue = integer + '.' + mantissa;
controlValue = parseFloat(controlValue).toFixed(settings.DecimalDigits);
整数&尾数将有一个特定的值,该值作为字符串存储在controlValue中<然后在IF条件下,将strong>controlValue与其他两个变量(settings.MaxValue&settings.MinValue)进行比较,但由于其类型为字符串类型,因此未通过条件

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

            if (controlValue < settings.MinValue)
                controlValue = settings.MinValue;
if(controlValue>settings.MaxValue)
controlValue=settings.MaxValue;
if(控制值
在我的分析中,所有三个变量都将有三个浮点类型的值

controlValue=123.23或123.00
settings.MaxValue=99.99
settings.MinValue=-99.99
请提供帮助,以便解析通过IF条件
.toFixed()
将您的号码转换回字符串。如果您想让它再次回到一个数字,那么您需要对它使用parseFloat。可能有更好的方法可以做到这一点,但在现有代码的基础上,您可以通过再次调用
parseFloat()
使
controlValue
成为一个在
if
语句中工作的数字,如下所示:

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));
帮我解决了问题。解决方案如下:

            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;
var-controlValue=e.target.value//从输入中获取值
controlValue=编号(controlValue)//将字符串转换为数字
//数字格式通过if条件解析
如果(controlValue>settings.MaxValue)
controlValue=数字(settings.MaxValue);
if(控制值
Cool….:)为了这个简单的解决方案,我绞尽脑汁。哈哈。。。谢谢@jfriend00@ShishirKumarM-我在我的答案中添加了一些选项。我正在寻找一个返回结果为213.00的结果,其中数字后面应该是“.00”。你能帮我解决这个问题吗?如果“万岁”之后的尾数不是00,则结果将返回尾数。。。我为这个问题编了一个解决方案。。但可悲的是,我只能在5小时后发布答案:(嗯,我帮你解决这个问题。没有其他人提供任何帮助。你从我的答案中获取一些信息,并将其纳入你的解决方案中(一件好事)然后你从我的回答中拿走了任何荣誉,所以我没有因为帮助你而获得任何荣誉。因为你在这里相对较新,也许你不明白这样做的原理,但如果你奖励那些帮助你的人,通常效果会更好。嗨@jfriend00,我试着点击投票来获得你的答案。它会给出一个框说你需要1做这件事的名声:)无论如何,非常感谢你,伙计。。。但答案没有多大帮助。不过,你还是找到了一份工作。:)是的,当你的声誉这么低的时候,你唯一能奖励回答者的方法就是接受他们的回答。你可以通过回答别人的问题来赢得更多的声誉。