|
|
Re: How to plot multiple charts and ho to round float to specific precision? [message #44958 is a reply to message #44858] |
Thu, 28 July 2005 17:52   |
Benjamin Hornberger
Messages: 258 Registered: March 2004
|
Senior Member |
|
|
Paul Van Delst wrote:
> Benjamin Hornberger wrote:
>
>>
>> Can't you just use a "0" in the format string ('(f0.2)') instead of
>> using a large number first and then trimming the string?
>
>
> I tried that first (based on your original post) but it didn't work for me.
>
> IDL> print, !version
> { x86 linux unix linux 6.0.3 Feb 26 2004 32 64}
> IDL> x=23.45654
> IDL> cx=string(x,format='(f0.2)')
> IDL> help, cx
> CX STRING = '23.456539'
> IDL> y=7140264.38264
> IDL> cy=string(y,format='(f0.2)')
> IDL> help, cy
> CY STRING = '7140264.500000'
>
> Dunno why not.
>
> paulv
>
IDL> print, !version
{ x86 Win32 Windows Microsoft Windows 6.1.1 Oct 11 2004 32 64}
IDL> x=23.45654
IDL> cx=string(x,format='(f0.2)')
IDL> help,cx
CX STRING = '23.46'
IDL> y=7140264.38264
IDL> cy=string(y,format='(f0.2)')
IDL> help,cy
CY STRING = '7140264.50'
Bug or feature?
Benjamin
|
|
|
Re: How to plot multiple charts and ho to round float to specific precision? [message #44959 is a reply to message #44858] |
Thu, 28 July 2005 15:45   |
Paul Van Delst[1]
Messages: 1157 Registered: April 2002
|
Senior Member |
|
|
Benjamin Hornberger wrote:
> Paul Van Delst wrote:
>
>> liko2@o2.pl wrote:
>>
>>> No, it has to be a value of variable, later used for a part of title of
>>> a chart. So it has to be exact value with only 2 digits after zero.
>>>
>>
>> Given your floating point variable,
>>
>> IDL> x=23.45654
>> IDL> print, x
>> 23.4565
>>
>> you can stick it into a string variable
>>
>> IDL> cx=string(x,format='(f15.2)')
>> IDL> help, cx
>> CX STRING = ' 23.46'
>>
>> Note I used the format f15.2 since you might have a number like
>>
>> IDL> y=7140264.38264
>> IDL> cy=string(y,format='(f15.2)')
>> IDL> help, cy
>> CY STRING = ' 7140264.38'
>>
>> You'll want to leave enough room up front (via the "15" in f15.2) for
>> the extra digits.
>>
>> And then you can crop the above results to your heart's content:
>>
>> IDL> help, strtrim(cx,2), strtrim(cy,2)
>> <Expression> STRING = '23.46'
>> <Expression> STRING = '140264.38'
>>
>> for your plot titles.
>>
>> paulv
>>
>
> Can't you just use a "0" in the format string ('(f0.2)') instead of
> using a large number first and then trimming the string?
I tried that first (based on your original post) but it didn't work for me.
IDL> print, !version
{ x86 linux unix linux 6.0.3 Feb 26 2004 32 64}
IDL> x=23.45654
IDL> cx=string(x,format='(f0.2)')
IDL> help, cx
CX STRING = '23.456539'
IDL> y=7140264.38264
IDL> cy=string(y,format='(f0.2)')
IDL> help, cy
CY STRING = '7140264.500000'
Dunno why not.
paulv
--
Paul van Delst
CIMSS @ NOAA/NCEP/EMC
|
|
|
|
Re: How to plot multiple charts and ho to round float to specific precision? [message #44961 is a reply to message #44858] |
Thu, 28 July 2005 15:38   |
Benjamin Hornberger
Messages: 258 Registered: March 2004
|
Senior Member |
|
|
Paul Van Delst wrote:
> liko2@o2.pl wrote:
>
>> No, it has to be a value of variable, later used for a part of title of
>> a chart. So it has to be exact value with only 2 digits after zero.
>>
>
> Given your floating point variable,
>
> IDL> x=23.45654
> IDL> print, x
> 23.4565
>
> you can stick it into a string variable
>
> IDL> cx=string(x,format='(f15.2)')
> IDL> help, cx
> CX STRING = ' 23.46'
>
> Note I used the format f15.2 since you might have a number like
>
> IDL> y=7140264.38264
> IDL> cy=string(y,format='(f15.2)')
> IDL> help, cy
> CY STRING = ' 7140264.38'
>
> You'll want to leave enough room up front (via the "15" in f15.2) for
> the extra digits.
>
> And then you can crop the above results to your heart's content:
>
> IDL> help, strtrim(cx,2), strtrim(cy,2)
> <Expression> STRING = '23.46'
> <Expression> STRING = '140264.38'
>
> for your plot titles.
>
> paulv
>
Can't you just use a "0" in the format string ('(f0.2)') instead of
using a large number first and then trimming the string?
Benjamin
|
|
|
Re: How to plot multiple charts and ho to round float to specific precision? [message #44966 is a reply to message #44858] |
Thu, 28 July 2005 09:30   |
Paul Van Delst[1]
Messages: 1157 Registered: April 2002
|
Senior Member |
|
|
liko2@o2.pl wrote:
> No, it has to be a value of variable, later used for a part of title of
> a chart. So it has to be exact value with only 2 digits after zero.
>
Given your floating point variable,
IDL> x=23.45654
IDL> print, x
23.4565
you can stick it into a string variable
IDL> cx=string(x,format='(f15.2)')
IDL> help, cx
CX STRING = ' 23.46'
Note I used the format f15.2 since you might have a number like
IDL> y=7140264.38264
IDL> cy=string(y,format='(f15.2)')
IDL> help, cy
CY STRING = ' 7140264.38'
You'll want to leave enough room up front (via the "15" in f15.2) for the extra digits.
And then you can crop the above results to your heart's content:
IDL> help, strtrim(cx,2), strtrim(cy,2)
<Expression> STRING = '23.46'
<Expression> STRING = '140264.38'
for your plot titles.
paulv
--
Paul van Delst
CIMSS @ NOAA/NCEP/EMC
|
|
|
Re: How to plot multiple charts and ho to round float to specific precision? [message #44968 is a reply to message #44858] |
Thu, 28 July 2005 08:46   |
James Kuyper
Messages: 425 Registered: March 2000
|
Senior Member |
|
|
liko2@o2.pl wrote:
> No, it has to be a value of variable, later used for a part of title of
> a chart. So it has to be exact value with only 2 digits after zero.
If the only thing you're going to do with the variable is print it as
part of a title of a chart, isn't it sufficient to know how to print it
with only 2 digits after zero? Are there any calculations you intend to
perform, where it's important to use the rounded value, rather than the
exact value, in those calculations? I've seen situations where
something like that was actually the right thing to do, but they're not
very common.
If you do actually need the value of the variable rounded, and not just
the display of the variable, then the expression you've already been
given does the job:
value = ROUND(100.0*x)/100.0
|
|
|
|
|
|
|