help-octave
[Top][All Lists]
Advanced

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

Re: Problem with precision


From: Martijn
Subject: Re: Problem with precision
Date: Thu, 16 Jun 2011 19:51:05 +0200

Hi Walter,
There was no problem. You just did not specify the formatting, so a sane
default was chosen. Rounding small number to 0, as is done when saving
in 3 decimal fixed point notation, is in many cases undesirable.
If you want something different, well, specify the formatting.

Martijn

On Thu, 2011-06-16 at 18:55 +0200, Fritz Fischer wrote:
> Hi!
> 
> Thanks for you quick responses. Ok, I will rewrite my function.
> So far I was using 
> 
> fprintf(fd,['time', num2str(timeStep),'\n']);
> 
> Just to learn something -  can someone tell me what exactly
> was causing the problem?

> Kind regards,
> Walter
> 
> 2011/6/16 Martijn <address@hidden>
>         Hi Fritz,
>         Try formatted output:
>         f = fopen("myfile.txt", "w");
>         fprintf(f, "%.3f\n", mydata);
>         fclose(f);
>         
>         The string "%.3f\n" is the formatting string, saying that
>         every number
>         is to be written als fixed point with 3 decimal, and is to be
>         followed
>         by a newline.
>         To write in two columns with a tab as separation or with a
>         fixed column
>         width use: "%.3f\t%.3f\n" or "%8.3f%12.3f\n".
>         Beware that to write a file with 2 columns the data matrix
>         needs to have
>         two rows. So if:
>         mydata = [x1, y1; x2, y2; ...; xn, yn]
>         then use
>         fprintf(f, "%.3f\t%.3f\n", mydata');
>         Notice the conjugation! This is a quirk that octave has to be
>         compatible
>         with Matlab.
>         
>         good luck,
>         
>         Martijn
>         
>         
>         
>         On Thu, 2011-06-16 at 16:34 +0200, Fritz Fischer wrote:
>         > Hello!
>         >
>         > I have a problem with Octave's precision and hope that you
>         can help
>         > me.
>         >
>         > My function writes data to a file, usually using a normal
>         precision.
>         > But some
>         > values are written with a very high precision and in the
>         exponential
>         > format:
>         >
>         > 44.875
>         > 40.262
>         > 35.327
>         > 30.005
>         > 20.981
>         > 6.9638e-28
>         > 0
>         > 0
>         >
>         > Can someone tell me how to fix this? I tried format short
>         and format
>         > long
>         > but the output is the same at both settings.
>         >
>         > Since the files are used as input for another program that
>         does not
>         > understand the exponential format I need to change this.
>         >
>         > Kind regards,
>         > Walter
>         >
>         >
>         >
>         >
>         >
>         
>         
>         > _______________________________________________
>         > Help-octave mailing list
>         > address@hidden
>         > https://mailman.cae.wisc.edu/listinfo/help-octave
>         
>         
>         
> 
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://mailman.cae.wisc.edu/listinfo/help-octave




reply via email to

[Prev in Thread] Current Thread [Next in Thread]