kammy shan leung <ksleung at students.uiuc.edu>
[mg8847] [Help?] Integer/Decimal portion of a real number
writes
> What I would like to do is break up a real number to
> its integer and decimal portion.
> For example:
>
> 4.12345 can be broken up to:
>
> integer_portion = 4
> decimal_portion = 12345
Kammy,
We have (slightly modifying your example)
inpt= IntegerPart[4.0012345]
4
frpt=FractionalPart[4.0012345 ]
0.0012345
But if you want to get 0012345 from the last output then one
problem is to get the digits, which can be done) and another one is
that 0012345 will be reduced to 12345 (which can be tackled by
storing a list of digits or a string). For example
StringDrop[ToString[frpt],2]
"0012345"
Strings can be converted by using the functions Characters and
ToExpression.
If strings are acceptable then we can move into strings right at
the beginning and get a function
infr[x_Real]:=
(str = ToString[x];
dp = StringPosition[str,"."][[1,1]];
{StringTake[str,dp-1],StringDrop[str,dp]}
)
Which gives
infr[4.0012345]
{"4","0012345"}
Note: The function RealDigits stores the information about frpt
that we want, but problems associated with approximatig inexact
numbers show up:
RealDigits[frpt]
{{1,2,3,4,4,9,9,9,9,9,9,9,9,8,0,5},-2}
Allan Hayes
hay at haystack.demon.co.uk
http://www.haystack.demon.co.uk/training.html
voice:+44 (0)116 2714198
fax: +44 (0)116 2718642
Leicester, UK