Re: [PHP] variable type - conversion/checking

[email protected] (Matijn Woudt)
Newsgroups php.general
Message-ID <CAC_gtuPbf98jT0RZeQBUpg=9zjkU2h9007B6Gem8dPC2U_AW0Q@mail.gmail.com>
On Sun, Mar 17, 2013 at 10:20 PM, Maciek Sokolewicz <
[email protected]> wrote:

> On 16-3-2013 19:20, Matijn Woudt wrote:
>
>> On Sat, Mar 16, 2013 at 6:52 PM, Maciek Sokolewicz <
>> [email protected]> wrote:
>>
>>  Hi,
>>>
>>>>
>>>> I have tried to find a way to check if a character string is possible to
>>>> test whether it is convertible to an intger !
>>>>
>>>> any suggestion ?
>>>>
>>>> BR georg
>>>>
>>>>
>>> All responses in this thread have been very nice; but you could also try
>>> a
>>> much simpler 2-step check:
>>>
>>> 1. is_numeric
>>> 2. if true > check if there's a decimal character in the string:
>>>
>>> if(is_numeric($str) && false === strpos('.', $str)) {
>>>     // it's an int for sure
>>> } else {
>>>     // might be a number, but it's definitly not an int
>>>
>>> }
>>>
>>>
>> Wrong.  is_numeric will accept 1e1, which is a float, so you would need to
>> check for e or E too.
>>
>> - Matijn
>>
>>  Although in theory I agree, indeed any e* number is treated as a
> floating point number. However, considering the exponent and the base are
> forced to be integer numbers (due to exclusion of decimal points), in the
> real number system, you will *always* end up with a natural number, i.e.
> integer. Regardless of your input.
>
> So as a result, the input could always be interpreted as an integer,
> without any precision-loss using the method above.
> - Tul
>

Except... that it might not fit in an 32 or 64 bit integer, which would
lead to precision loss.

- Matijn
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.