[Thread Prev][Thread Next][Index]

Re: [ferret_users] listing an integer number to a file



Hi Murat,
Ryo's quite right about the reason you lose the last digits of the floating-point variable. 

Here's one idea. If you're not working with the numbers as numeric values, but just assigning them in Ferret commands, you could put it into a string variable:
yes? let intnum = "200710120300"
yes? list/format=(a)/file=out.txt/nohead/clobber  intnum
yes? sp cat out.txt
200710120300

Depending on what you're trying to do, you may be able to work with your data using string functions. For instance you could define string variables with years, months, days, etc, and use the STRCAT function to append these into single string variables
yes? let datestr = {"20070215","20071115", "20080115"}
yes? let timestr = {"1115", "1200", "0112"}
yes? let outstr = strcat(datestr, timestr)
yes? list/format=(a)/file=out.txt/nohead/clobber outstr
 LISTing to file out.txt

yes? sp cat out.txt
200702151115
200711151200
200801150112

Ryo Furue wrote:
Hi Murat,

| I am trying to save an integer number to a file.
| 
| yes? let intnum = 200710120300
| yes? list/file=out.txt/nohead/clobber/format=(f20.0) intnum
| 
| 
| however, the out.txt file include below value, instead of intnum.
| more out.txt
|      200710127616.

I think a variable in Ferret is a single-precision floating point
number, which can accommodate only 5-7 decimal digits.  Your number
has 12 decimal places.  Even the standard integer (32-bit) can't
handle it.  (Its maximum is 2147483647.)

I don't have a good idea to solve your problem.  The best I can
think of right now is something along the lines of

  yes? let a = 1234
  yes? let b = 5678
  yes? list/format=(f5.0,f5.0) a,b
     . . . . . .
  1234.5678.

and remove the decimal points afterwards outside Ferret (using
a shell script or something).

Regards,
Ryo
  

[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement