Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: problem in reading large deimal number
Replies: 1   Last Post: Jul 17, 2013 9:41 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Steven Lord

Posts: 17,944
Registered: 12/7/04
Re: problem in reading large deimal number
Posted: Jul 17, 2013 9:41 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply



"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




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.