Unexpected scientific notation

Paul McNett p at ulmcnett.com
Wed Jan 7 21:04:16 EST 2009


Robert Kern wrote:
> Paul McNett wrote:
>> One of my users has reported that my app is giving them scientific 
>> notation instead of decimal notation for one specific value among many 
>> that display properly. I am unable to reproduce on my end, and this is 
>> the first I've heard of anything like this since the app's launch 2 
>> years ago.
>>
>> The app bundles python 2.5.2 using py2exe.
>>
>> It displays '3E+1' instead of '30.0'.
>>
>> As I can't reproduce I'm looking for an idea brainstorm of what could 
>> be causing this. What would be choosing to display such a normal 
>> number in scientific notation?
>>
>> Ideas?
> 
> Locales? Do you at last know the code that's responsible for formatting 
> the number?

I do use locale.format, but I use it for all numbers, and only one such number
displays in scientific notation - the rest are fine. Here's the code:

    1355   def uom_string(self, val):
    1356     """Given a decimal value, format it for string display."""
    1357     if self.unit_of_measure == "inches":
    1358       fd = dabo.dAppRef.getSSPref("fraction_display")
    1359       if fd == "decimal":
    1360         return '%s"' % locale.format("%.5f", val.normalize(), True)
    1361       else:
    1362         return '%s"' % fractions.getImperial(val)
    1363     elif self.unit_of_measure == "millimeters":
    1364       #return u"%s\u339C" % self.uom_round(val)
    1365       return "%smm" % locale.format("%.1f", self.uom_round(val), True)
    1366     else:
    1367       raise ValueError, "Unit of Measure '%s' not recognized." %
self.unit_of_measure

In this case, self.unit_of_measure == "inches" and fd == "decimal".

Thanks
Paul




More information about the Python-list mailing list