Op Sunday 3 May 2015 10:40 CEST schreef Ben Finney: > Cecil Westerhof <ce...@decebal.nl> writes: > >> When I have a value like 5.223701009526849e-05 in most cases I am >> not interested in all the digest after the dot. > > What type of value is it?
If the absolute value is bigger as 0 and smaller as 1, it should be a float. ;-) > A ‘float’ value has many different textual representations, most of > them inaccurate. So talking about the digits of a ‘float’ value is > only partly meaningful; digits are a property of some chosen > representation, not intrinsic to the number. > > A ‘str’ value can be converted in various ways, but is useless as a > number until you create a new number from the result. > > Choosing a solution will rely on understanding that the textual > representation of a number is not itself a number; and vice versa, a > number value does not have a canonical text representation. It is because I display things like: 02:47:18: Increase memoize -> iterative 19 (0.0004942629893776029 / 2.475001383572817e-05) And that is way to specific. >> Is there a simple way to convert it to a string like '5e-05'? > > Assuming we're talking about a ‘float’ value:: > >>>> foo = 5.223701009526849e-05 >>>> "{foo:5.1}".format(foo=foo) > '5e-05' > > See the ‘str.format’ documentation, especially the detailed > documentation for the “format specification mini-language” > <URL:https://docs.python.org/3/library/string.html#format-specification-mini-language> > for how to specify exactly how you want values to be formatted as > text. Very interesting documentation. I go for: '{foo:.3E}'.format(foo=foo) Then it simplifies also big numbers and it works for int's also. (Not needed now, but it never hurts to be prepared for the future.) -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list