Re: variable type - conversion/checking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 17, 2013 at 10:20 PM, Maciek Sokolewicz <
maciek.sokolewicz@xxxxxxxxx> wrote:

> On 16-3-2013 19:20, Matijn Woudt wrote:
>
>> On Sat, Mar 16, 2013 at 6:52 PM, Maciek Sokolewicz <
>> maciek.sokolewicz@xxxxxxxxx> 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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux