[Python-checkins] python/dist/src/Doc/tut tut.tex,1.234,1.235

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Thu Jul 1 08:56:57 EDT 2004


Update of /cvsroot/python/python/dist/src/Doc/tut
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17562
Modified Files:
	tut.tex 
Log Message:
* Fix typos.
* Format an example so that the identation is more obvious.
* Add a section on the decimal module to the Brief Tour Part II.
Index: tut.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/tut/tut.tex,v
retrieving revision 1.234
retrieving revision 1.235
diff -C2 -d -r1.234 -r1.235
*** tut.tex	3 Jun 2004 17:19:25 -0000	1.234
--- tut.tex	1 Jul 2004 12:56:54 -0000	1.235
***************
*** 4339,4343 ****
 
 \begin{verbatim}
! >>> class Reverse:
 "Iterator for looping over a sequence backwards"
 def __init__(self, data):
--- 4339,4343 ----
 
 \begin{verbatim}
! class Reverse:
 "Iterator for looping over a sequence backwards"
 def __init__(self, data):
***************
*** 4353,4358 ****
 
 >>> for char in Reverse('spam'):
! 	print char
! 
 m
 a
--- 4353,4358 ----
 
 >>> for char in Reverse('spam'):
! ... print char
! ...
 m
 a
***************
*** 4372,4382 ****
 
 \begin{verbatim}
! >>> def reverse(data):
! for index in range(len(data)-1, -1, -1):
! yield data[index]
! 		
 >>> for char in reverse('golf'):
! print char
! 
 f
 l
--- 4372,4382 ----
 
 \begin{verbatim}
! def reverse(data):
! for index in range(len(data)-1, -1, -1):
! yield data[index]
! 	
 >>> for char in reverse('golf'):
! ... print char
! ...
 f
 l
***************
*** 4895,4899 ****
 \end{verbatim}
 
! The principal challenge of multi-thread applications is coordinating
 threads that share data or other resources. To that end, the threading
 module provides a number of synchronization primitives including locks,
--- 4895,4899 ----
 \end{verbatim}
 
! The principal challenge of multi-threaded applications is coordinating
 threads that share data or other resources. To that end, the threading
 module provides a number of synchronization primitives including locks,
***************
*** 4936,4940 ****
 output is sent to standard error. Other output options include routing
 messages through email, datagrams, sockets, or to an HTTP Server. New
! filters select different routing based on message priority: DEBUG,
 INFO, WARNING, ERROR, and CRITICAL.
 
--- 4936,4940 ----
 output is sent to standard error. Other output options include routing
 messages through email, datagrams, sockets, or to an HTTP Server. New
! filters can select different routing based on message priority: DEBUG,
 INFO, WARNING, ERROR, and CRITICAL.
 
***************
*** 4968,4977 ****
 ... return str(self.value)
 ...
! >>> a = A(10)		 # create a reference
 >>> d = weakref.WeakValueDictionary()
 >>> d['primary'] = a # does not create a reference
! >>> d['primary']		 # fetch the object if it is still alive
 10
! >>> del a			 # remove the one reference
 >>> gc.collect() # run garbage collection right away
 0
--- 4968,4977 ----
 ... return str(self.value)
 ...
! >>> a = A(10) # create a reference
 >>> d = weakref.WeakValueDictionary()
 >>> d['primary'] = a # does not create a reference
! >>> d['primary'] # fetch the object if it is still alive
 10
! >>> del a # remove the one reference
 >>> gc.collect() # run garbage collection right away
 0
***************
*** 5057,5060 ****
--- 5057,5116 ----
 
 
+ \section{Tools for Working with Decimal Floating Point\label{decimal-fp}}
+ 
+ The \module{decimal} module, offers a \class{Decimal} data type for
+ decimal floating point arithmetic. Compared to the built-in \class{float}
+ type implemented with binary floating point, the new class is especially
+ useful for financial applications and other uses which require exact
+ decimal representation, control over precision, control over rounding
+ to meet legal or regulatory requirements, tracking of significant
+ decimal places, or for applications where the user expects the results
+ to match hand calculations done as taught in school.
+ 
+ For example, calculating a 5% tax on a 70 cent phone charge gives
+ different results in decimal floating point and binary floating point
+ with the difference being significant when rounding to the nearest
+ cent:
+ 
+ \begin{verbatim}
+ >>> from decimal import * 
+ >>> Decimal('0.70') * Decimal('1.05')
+ Decimal("0.7350")
+ >>> .70 * 1.05
+ 0.73499999999999999 
+ \end{verbatim}
+ 
+ Note that the \class{Decimal} result keeps a trailing zero, automatically
+ inferring four place significance from two digit mulitiplicands. Decimal
+ reproduces mathematics as done by hand and avoids issues that can arise
+ when binary floating point cannot exactly represent decimal quantities.
+ 
+ Exact representation enables the \class{Decimal} class to perform
+ modulo calculations and equality tests that are unsuitable for binary
+ floating point:
+ 
+ \begin{verbatim}
+ >>> Decimal('1.00') % Decimal('.10')
+ Decimal("0.00")
+ >>> 1.00 % 0.10
+ 0.09999999999999995
+ 
+ >>> sum([Decimal('0.1')]*10) == Decimal('1.0')
+ True
+ >>> sum([0.1]*10) == 1.0
+ False 
+ \end{verbatim}
+ 
+ The \module{decimal} module also allows arbitrarily large precisions to be
+ set for calculation:
+ 
+ \begin{verbatim}
+ >>> getcontext().prec = 36
+ >>> Decimal(1) / Decimal(7)
+ Decimal("0.142857142857142857142857142857142857")
+ \end{verbatim}
+ 
+ 
+ 
 \chapter{What Now? \label{whatNow}}
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /