Date: Jul 17, 2013 9:41 AM
Author: Steven Lord
Subject: Re: problem in reading large deimal number



"seeker_123 " <vinuhere5653@gmail.com> wrote in message
news:ks5c8i$ls8$1@newscl01ah.mathworks.com...
> hiii
>
> my main intention to convert decimal number to IEEE 754 form.
> so for that conversion i am going to use below function
> -----------------------------------------------------------------------------------------------
> function s = num2bin(x)
> s = sprintf('%bx',x);
> t = sprintf('%bx',2);
> if t(1)==0
> s = reshape(fliplr(reshape(s,2,8)),1,16); end
> s = reshape(dec2bin(hex2dec(s'),4)',1,4*16);
> -------------------------------------------------------------------------------------------------
>
> function calling fid = fopen('decimal.txt','r');
> x = fscanf(fid,'%f',1)
> y = num2bin(x)
> fclose(fid)
>
> where x will be decimal no.
> which i am going to read from a file this function works fine if decimal
> number is small
> if it is large like this
> 89884656743115795386465259539451236680898848947115328636715040578866337902750481566354238661203768010560056939935696678829394884407208311246423715319737062188883946712432742638151109800623047059726541476042502884419075341171231440736956555270413618581675255342293149119973622969239858152417678164809964723200
> then it x is truncating
> 8.9885e+307
> this i dont want because i am loosing precision


That's unavoidable. The large number you posted is not exactly representable
as an IEEE 754 double precision number. The best you can do is to work
symbolically with Symbolic Math Toolbox.

s =
sym('89884656743115795386465259539451236680898848947115328636715040578866337902750481566354238661203768010560056939935696678829394884407208311246423715319737062188883946712432742638151109800623047059726541476042502884419075341171231440736956555270413618581675255342293149119973622969239858152417678164809964723200')

--
Steve Lord
slord@mathworks.com
To contact Technical Support use the Contact Us link on
http://www.mathworks.com