[Numpy-discussion] Number of digits

Robert Kern robert.kern at gmail.com
Mon Jul 10 09:15:38 CDT 2006


David Douard wrote:
> On Mon, Jul 10, 2006 at 08:46:33AM -0500, Robert Kern wrote:
>> Tim Hochberg wrote:
>>> Nils Wagner wrote:
>>>> Hi all,
>>>>
>>>> how can I increase the number of digits in the output of str(.) ?
>>>>   
>>> You can't as far as I know. For floats, you can use "%.nf". For example:
>>>
>>> "%.13f" % 493.4802200544680
>> The problem is is that he doesn't have a float. He has one of our float64scalar 
>> objects. The str() of a real Python float will give as many digits as are 
>> necessary to recreate number and no more (or maybe one or two more). A str() of 
>> a float64scalar will round according to some rule that I haven't figured out, 
>> yet. It doesn't seem to be configurable with numpy.set_printoptions().
> 
> This is a different ptoblem from the one exposed by Nils. I mean, tha
> fact that str() on numpy.float64 objects is somewhat obscure is a
> problem that should obviously be addressed some day. However, as far as
> I understand Nils' message, the "%.13f" trick is enough for what he
> need. But I may be wrong... He just want to "increase the number of
> digits", not have the "optimal" number of digits (as long as this is
> meaningfull).
> 
> But I may have missed something.

No, you didn't miss anything. I just haven't gotten enough sleep.

I thought that Python floats had a __str__ that computed just as many places as 
necessary, but it looks like it just rounds at 12 places. This is not an 
adjustable parameter (barring modifying the C code of the interpreter). I also 
thought that the float scalars were being printed differently. However, the code 
for the float64scalar __str__ just gets the double value, creates a Python float 
object from it, and returns the __str__ result from that object.

Everything works as intended. Nothing to see here. Move along.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco





More information about the Numpy-discussion mailing list