我在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条件
答案 0 :(得分:2)
.toFixed()
将您的号码变回字符串。如果你想再次回到一个数字,那么你需要在它上面使用parseFloat。可能有更好的方法来实现这一点,但是在现有代码的基础上,您可以通过再次调用controlValue
来使if
一个可以在parseFloat()
语句中使用的数字:1}} p>
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;