Please correct me if I am wrong here but what you are doing is basically asking if the number is less than or equal to 3… and if it is such: it is “cc-amex”…
BUT in the end of your final IF statement: you state that if it is less than or greater to 2 it is “times”… ALSO that if it is incompatible to all IF statements: it is yet again: “times”
Why this is sort of odd for me is that IF 2, 3, 4, 5, 6 is the only possible outcomes: then wouldn’t it be best to start with 6 and leave out 2 (As final falseValue shall others not have been met) or to start with 2 and leave out 6? Since 2 is ALSO lesser than or equal to three (Unless there is a coding situation I am missing out on If I type in 1 I get “cc-amex”… If I type 2 I get “cc-amex” and 3 again “cc-amex”…
This sort of renders the last IF(self.inputVal <= 2,
“times” satement falicious so such 2 (or less) will never give you “times”… Only numbers greater than 6 will.
And THAT would be possibly why you get a:
Now as I get it… You have a card number (16 digits) and you wnat to take the first digit off of it to evaluate.
Whereas this number would determine the bank:
- 2 → Times
- 3 → amex
- 4 → visa
- 5 → mastercard
- 6 → discover
Am I right?
IF so… Wouldn’t you be best off to isolate the first digit before playing the
From the top of my head I would say “Divide it by 1000000000000000” (as inconvenient as that may sound…)…
FLOOR it to round it down to the nearest integer and then plug it into the IF loops excluding the “Lesser than” sign.
Hmmm wait… In retrospect… You would I presume want “the card” available from start onward right?
So even in the first number: You would like it visible… Wait… Then best we divide it by a 10 to the power of the number of digits in the variable… Something like:
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 ))
This should give you ALWAYS the first number how many numbers ever you type into the field…
STRING reads the text value of the input where
LENGTH counts the letters in it (Hence why we made it a string)…
POWER takes the first value and gives it the power of the second value…
FLOOR takes the lower integer of the division.
(The additional “-1” is so that you get a number greater than 1… Like when you have a three digit number it will be divided by ten to the power of 3… Making it 0,1)
**Sort of LONG but well… like this (GIVEN that your variable is a NUMBER!!) ** might actually work for you…
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 )) == 2,
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 )) == 3,
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 )) == 4,
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 )) == 5,
FLOOR(self.inputVal / POWER(10, LENGTH(STRING(self.inputVal)) - 1 )) == 6,
LOL now that I finished the typing and copy/pasting of values… MAN does that look goofy… LONG and pretty wrong (THOUGH it SHOULD work!!)
And only AS I finished typing I realized that theoretically I could have just converted it to a
STRING and then
TRUNCATE 'ed it
I am a certified Idiot
I so hope this was helpful or at least entertaining