comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: problem string from double missing digits
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: problem string from double missing digits [message #36402] Thu, 11 September 2003 06:35
R.Bauer is currently offline  R.Bauer
Messages: 1424
Registered: November 1998
Senior Member
James Kuyper wrote:
> Reimar Bauer wrote:
>
>> Hi all,
>>
>> did someone know what here is going on.
>>
>> IDL> d = 98046763.617D
>> IDL> s = string(d)
>> IDL> PRINT,s
>> 98046764.
>> IDL> HELP,s
>> S STRING = ' 98046764.'
>>
>> Where are the digits ????
>
> ...
>
>> Or does it mean I have first to determine the Format of the number and I
>> have to use this information to get the right number.
>
>
> If you don't like the default format, you do have to specify the
> particular alternative you wish to use. However, you don't have to be
> explicit:
>
> IDL> PRINT,string(d,FORMAT='(F)')
> 98046763.6169999990000000
>
> That's overkill, but at least you didn't lose anything. Coming from a C
> background, I personally prefer:
>
> IDL> PRINT,string(d,FORMAT='(%"%f")')
> 98046763.617000
>
> ...

This is exactly what I wanted to have. I missed to test C Formatting codes.

>
>> This goes right. But my feeling is this is terrible. Because I bet noone
>> takes care on this. What's your feeling?
>
>
> My feeling is that you'd lose your bet. Almost everyone who spends much
> time printing floating point numbers ends up sooner or later having to
> override the default formats.

I am not sure because many times it works for float. double makes the
difference.




Thanks

Reimar






--
Reimar Bauer

Institut fuer Stratosphaerische Chemie (ICG-I)
Forschungszentrum Juelich
email: R.Bauer@fz-juelich.de
------------------------------------------------------------ -------
a IDL library at ForschungsZentrum Juelich
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_lib_intro. html
============================================================ =======
Re: problem string from double missing digits [message #36403 is a reply to message #36402] Thu, 11 September 2003 06:24 Go to previous message
K. Bowman is currently offline  K. Bowman
Messages: 330
Registered: May 2000
Senior Member
In article <bjpqp2$fhrl$1@zam602.zam.kfa-juelich.de>,
Reimar Bauer <R.Bauer@fz-juelich.de> wrote:

> Hi all,
>
> did someone know what here is going on.
>
> IDL> d = 98046763.617D
> IDL> s = string(d)
> IDL> PRINT,s
> 98046764.
> IDL> HELP,s
> S STRING = ' 98046764.'
>
> Where are the digits ????

The default (free-form) formats are G13.6 for FLOATs and G16.8 for
DOUBLEs. If you need more places to the right of the decimal point, you
have to use an explicit format. (Building IDL Applications, v. 5.6, p.
234)

"G - Use F or E format depending on the magnitude of the value being
processed."


IDL> d = 98046763.617D
IDL> print, d, FORMAT = "(G16.8)"
98046764.
IDL> print, d, FORMAT = "(F20.8)"
98046763.61700000
IDL> print, d, FORMAT = "(E20.10)"
9.8046763617E+07

Ken
Re: problem string from double missing digits [message #36404 is a reply to message #36403] Thu, 11 September 2003 06:10 Go to previous message
James Kuyper is currently offline  James Kuyper
Messages: 425
Registered: March 2000
Senior Member
Reimar Bauer wrote:
>
> Hi all,
>
> did someone know what here is going on.
>
> IDL> d = 98046763.617D
> IDL> s = string(d)
> IDL> PRINT,s
> 98046764.
> IDL> HELP,s
> S STRING = ' 98046764.'
>
> Where are the digits ????
...
> Or does it mean I have first to determine the Format of the number and I
> have to use this information to get the right number.

If you don't like the default format, you do have to specify the
particular alternative you wish to use. However, you don't have to be
explicit:

IDL> PRINT,string(d,FORMAT='(F)')
98046763.6169999990000000

That's overkill, but at least you didn't lose anything. Coming from a C
background, I personally prefer:

IDL> PRINT,string(d,FORMAT='(%"%f")')
98046763.617000

...
> This goes right. But my feeling is this is terrible. Because I bet noone
> takes care on this. What's your feeling?

My feeling is that you'd lose your bet. Almost everyone who spends much
time printing floating point numbers ends up sooner or later having to
override the default formats.
Re: problem string from double missing digits [message #36405 is a reply to message #36404] Thu, 11 September 2003 06:12 Go to previous message
Craig Markwardt is currently offline  Craig Markwardt
Messages: 1869
Registered: November 1996
Senior Member
Reimar Bauer <R.Bauer@fz-juelich.de> writes:
>
> Where are the digits ????
>
> Or does it mean I have first to determine the Format of the number and I
> have to use this information to get the right number.
>
> IDL> s = string(d,format='(F12.3)')
> IDL> PRINT,s
> 98046763.617
>
> This goes right. But my feeling is this is terrible. Because I bet noone
> takes care on this. What's your feeling?

No you don't need to figure out the number of significant digits,
since you can use the format code 'D0'. Formatting output properly is
ultimately the programmer's job. As you did, one rapidly discovers
when they get the formatting wrong.

By the way, why use the 'F' format code, when you know that you have
more than 7 significant digits? Aside question to the group: are the
'F' or 'D' format codes any different?

Good luck,
Craig
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: problem string from double missing digits
Next Topic: IDL java bridge

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 13:45:57 PDT 2025

Total time taken to generate the page: 0.00679 seconds