Re: IsIntegerOrFloat
- To: mathgroup at smc.vnet.net
- Subject: [mg87037] Re: IsIntegerOrFloat
- From: Peter Breitfeld <phbrf at t-online.de>
- Date: Sun, 30 Mar 2008 01:14:11 -0500 (EST)
- References: <fsl214$g77$1@smc.vnet.net>
carlos at colorado.edu schrieb:
> Thanks to all who replied to my previous questions. Those functions work
> fine now. Here is another question - I apologize if it has been asked before.
> I need a function
>
> IsIntegerOrFloat[expr]
>
> that returns True if expr, which is generally a flat list, contains
> only integers or floating point numbers, and False otherwise.
> Rational numbers such as 1/2 are considered symbolic for this test; so is
> \[Pi] or Sqrt[5]. Appearance of any symbol, as in 2.0*a+3.5, makes it False.
> As in previous questions, this should work on versions >=4.0.
>
> Use: unified printing of simulation data structures in table formats.
> Expressions containing only integers or floats are filtered through
> PaddedForm[] and ToString[], others through Symbol[]. The end
> result (a flat table of strings) is filtered through TableForm with
> appropriate options.
>
Hi Carlos
this seems to work:
IsIntegerOrFloat[list_] :=
With[{ll = Flatten@list},
If[Length[ll] == Length[Cases[ll, _Real | _Integer]],
True, False]]
l1={1, 2.0, \[Pi], "a", b, Sqrt[2]}
l2 = Union[RandomInteger[{1, 10}, {5}], RandomReal[{1, 10}, {5}]]
l3 = {1, {2.1, {1.6, 2, 5}}, 6}
l4 = {1, {2.1, {1.6, Pi, 5}}, 6}
IsIntegerOrFloat[l1] ---> False
IsIntegerOrFloat[l2] ---> True
IsIntegerOrFloat[l3] ---> True
IsIntegerOrFloat[l4] ---> False
Gruss Peter
--
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==
Peter Breitfeld, Bad Saulgau, Germany -- http://www.pBreitfeld.de