Re: Most significant digit and formatting floating point output [message #81093 is a reply to message #81092] |
Tue, 07 August 2012 07:09   |
Helder Marchetto
Messages: 520 Registered: November 2011
|
Senior Member |
|
|
On Tuesday, August 7, 2012 3:44:05 PM UTC+2, David Fanning wrote:
> Helder writes:
>
>
>
>> well, I'm tangled up with something quite stupid, but I don't want to reinvent the wheel (for the 10th time today...).
>
>> Here are two versions of the same question:
>
>> 1) Short version: given a number such as 0.003456789 how do I get the most significant digit position? I need this number to produce formatted output that would convert the number to simply 0.003. In general I can figure this out with some IFs and stuff like that, but I'm hoping there is a more "elegant" way for this.
>
>>
>
>> 2) Long version: I'm analyzing some images and I get results with errors. These numbers are floating point and I would like to format the output so that it looks something like this: 'My results are (0.123 +/- 0.003) units' and the source data is:
>
>> Result = 0.123456789
>
>> Error = 0.003456789
>
>> The point is that I need to find the first non-zero element in Error. Then I would use this number in the FORMAT parameter like this: MyFormat = '(f0'+STRTRIM(FirstNonZeroElement+2,2)+'.'+STRTRIM(FirstNonZ eroElement,2)+')'
>
>> and use "MyFormat" as formatting for the string conversion of both.
>
>> (in the above example FirstNonZeroElement should be 3 and MyFormat would be '(f05.3)'.
>
>
>
> You might be interested in the Number_Formatter program
>
> in the Coyote Library:
>
>
>
> http://www.idlcoyote.com/programs/number_formatter.pro
>
>
>
> Cheers,
>
>
>
> David
>
>
>
>
>
>
>
> --
>
> David Fanning, Ph.D.
>
> Fanning Software Consulting, Inc.
>
> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")
Thanks David,
If I understand number_formatter correctly, it accepts a number of decimals as an input, but it does not determine which one is the first significant digit.
I'm starting to think that I'll have to code this as in your program and look for the first digit that is not a zero or a dot.
Thanks,
Helder
|
|
|