# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001-2017, Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , 2017.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-26 18:49+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Dong-gweon Oh \n"
"Language-Team: Korean (http://python.flowdas.com)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.5.1\n"
#: ../Doc/tutorial/floatingpoint.rst:9
msgid "Floating Point Arithmetic: Issues and Limitations"
msgstr " : "
#: ../Doc/tutorial/floatingpoint.rst:14
msgid ""
"Floating-point numbers are represented in computer hardware as base 2 "
"(binary) fractions. For example, the decimal fraction ::"
msgstr " (base) 2() . , ::"
#: ../Doc/tutorial/floatingpoint.rst:19
msgid ""
"has value 1/10 + 2/100 + 5/1000, and in the same way the binary fraction "
"::"
msgstr " 1/10 + 2/100 + 5/1000 , ::"
#: ../Doc/tutorial/floatingpoint.rst:23
msgid ""
"has value 0/2 + 0/4 + 1/8. These two fractions have identical values, "
"the only real difference being that the first is written in base 10 "
"fractional notation, and the second in base 2."
msgstr ""
" 0/2 + 0/4 + 1/8 . , 10 "
" 2 ."
#: ../Doc/tutorial/floatingpoint.rst:27
msgid ""
"Unfortunately, most decimal fractions cannot be represented exactly as "
"binary fractions. A consequence is that, in general, the decimal "
"floating-point numbers you enter are only approximated by the binary "
"floating-point numbers actually stored in the machine."
msgstr ""
", . , "
" ."
#: ../Doc/tutorial/floatingpoint.rst:32
msgid ""
"The problem is easier to understand at first in base 10. Consider the "
"fraction 1/3. You can approximate that as a base 10 fraction::"
msgstr ""
" 10 . 1/3 . ::"
#: ../Doc/tutorial/floatingpoint.rst:37 ../Doc/tutorial/floatingpoint.rst:41
msgid "or, better, ::"
msgstr ", , ::"
#: ../Doc/tutorial/floatingpoint.rst:45
msgid ""
"and so on. No matter how many digits you're willing to write down, the "
"result will never be exactly 1/3, but will be an increasingly better "
"approximation of 1/3."
msgstr ". 1/3 , 1/3 ."
#: ../Doc/tutorial/floatingpoint.rst:49
msgid ""
"In the same way, no matter how many base 2 digits you're willing to use, "
"the decimal value 0.1 cannot be represented exactly as a base 2 fraction."
" In base 2, 1/10 is the infinitely repeating fraction ::"
msgstr ""
" , , 0.1 . , 1/10 "
" ::"
#: ../Doc/tutorial/floatingpoint.rst:55
msgid ""
"Stop at any finite number of bits, and you get an approximation. On most"
" machines today, floats are approximated using a binary fraction with the"
" numerator using the first 53 bits starting with the most significant bit"
" and with the denominator as a power of two. In the case of 1/10, the "
"binary fraction is ``3602879701896397 / 2 ** 55`` which is close to but "
"not exactly equal to the true value of 1/10."
msgstr ""
" , . , float , "
" 53 , 2 . 1/10 , "
"``3602879701896397 / 2 ** 55`` , 1/10 ."
#: ../Doc/tutorial/floatingpoint.rst:62
msgid ""
"Many users are not aware of the approximation because of the way values "
"are displayed. Python only prints a decimal approximation to the true "
"decimal value of the binary approximation stored by the machine. On most"
" machines, if Python were to print the true decimal value of the binary "
"approximation stored for 0.1, it would have to display ::"
msgstr ""
" . "
" . , 0.1 "
" ::"
#: ../Doc/tutorial/floatingpoint.rst:71
msgid ""
"That is more digits than most people find useful, so Python keeps the "
"number of digits manageable by displaying a rounded value instead ::"
msgstr ""
" , ::"
#: ../Doc/tutorial/floatingpoint.rst:77
msgid ""
"Just remember, even though the printed result looks like the exact value "
"of 1/10, the actual stored value is the nearest representable binary "
"fraction."
msgstr " 1/10 , ."
#: ../Doc/tutorial/floatingpoint.rst:80
msgid ""
"Interestingly, there are many different decimal numbers that share the "
"same nearest approximate binary fraction. For example, the numbers "
"``0.1`` and ``0.10000000000000001`` and "
"``0.1000000000000000055511151231257827021181583404541015625`` are all "
"approximated by ``3602879701896397 / 2 ** 55``. Since all of these "
"decimal values share the same approximation, any one of them could be "
"displayed while still preserving the invariant ``eval(repr(x)) == x``."
msgstr ""
", . , ``0.1`` "
"``0.10000000000000001`` "
"``0.1000000000000000055511151231257827021181583404541015625`` "
"``3602879701896397 / 2 ** 55`` . "
"``eval(repr(x)) == x`` ."
#: ../Doc/tutorial/floatingpoint.rst:88
msgid ""
"Historically, the Python prompt and built-in :func:`repr` function would "
"choose the one with 17 significant digits, ``0.10000000000000001``. "
"Starting with Python 3.1, Python (on most systems) is now able to choose "
"the shortest of these and simply display ``0.1``."
msgstr ""
", :func:`repr` 17 ``0.10000000000000001`` "
" . 3.1, ( ) , ``0.1`` "
"."
#: ../Doc/tutorial/floatingpoint.rst:93
msgid ""
"Note that this is in the very nature of binary floating-point: this is "
"not a bug in Python, and it is not a bug in your code either. You'll see"
" the same kind of thing in all languages that support your hardware's "
"floating-point arithmetic (although some languages may not *display* the "
"difference by default, or in all output modes)."
msgstr ""
" : , . "
" ( ** "
" )."
#: ../Doc/tutorial/floatingpoint.rst:99
msgid ""
"For more pleasant output, you may wish to use string formatting to "
"produce a limited number of significant digits::"
msgstr " , ::"
#: ../Doc/tutorial/floatingpoint.rst:111
msgid ""
"It's important to realize that this is, in a real sense, an illusion: "
"you're simply rounding the *display* of the true machine value."
msgstr ", , : ** ."
#: ../Doc/tutorial/floatingpoint.rst:114
msgid ""
"One illusion may beget another. For example, since 0.1 is not exactly "
"1/10, summing three values of 0.1 may not yield exactly 0.3, either::"
msgstr ""
" . , 0.1 1/10 , 0.1 "
"0.3 ::"
#: ../Doc/tutorial/floatingpoint.rst:120
msgid ""
"Also, since the 0.1 cannot get any closer to the exact value of 1/10 and "
"0.3 cannot get any closer to the exact value of 3/10, then pre-rounding "
"with :func:`round` function cannot help::"
msgstr ""
", 0.1 1/10 , 0.3 3/10 , "
":func:`round` ::"
#: ../Doc/tutorial/floatingpoint.rst:127
msgid ""
"Though the numbers cannot be made closer to their intended exact values, "
"the :func:`round` function can be useful for post-rounding so that "
"results with inexact values become comparable to one another::"
msgstr ""
" , :func:`round` "
" ::"
#: ../Doc/tutorial/floatingpoint.rst:134
msgid ""
"Binary floating-point arithmetic holds many surprises like this. The "
"problem with \"0.1\" is explained in precise detail below, in the "
"\"Representation Error\" section. See `The Perils of Floating Point "
"`_ for a more complete account of other "
"common surprises."
msgstr ""
" . \"0.1\" \" \" . "
"` `_ "
" ."
#: ../Doc/tutorial/floatingpoint.rst:139
msgid ""
"As that says near the end, \"there are no easy answers.\" Still, don't "
"be unduly wary of floating-point! The errors in Python float operations "
"are inherited from the floating-point hardware, and on most machines are "
"on the order of no more than 1 part in 2\\*\\*53 per operation. That's "
"more than adequate for most tasks, but you do need to keep in mind that "
"it's not decimal arithmetic and that every float operation can suffer a "
"new rounding error."
msgstr ""
" , \" .\" , ! float "
" , 2\\*\\*53 1 . "
" . , float "
" ."
#: ../Doc/tutorial/floatingpoint.rst:146
msgid ""
"While pathological cases do exist, for most casual use of floating-point "
"arithmetic you'll see the result you expect in the end if you simply "
"round the display of your final results to the number of decimal digits "
"you expect. :func:`str` usually suffices, and for finer control see the "
":meth:`str.format` method's format specifiers in :ref:`formatstrings`."
msgstr ""
" , , "
" . :func:`str` , "
":ref:`formatstrings` :meth:`str.format` ."
#: ../Doc/tutorial/floatingpoint.rst:152
msgid ""
"For use cases which require exact decimal representation, try using the "
":mod:`decimal` module which implements decimal arithmetic suitable for "
"accounting applications and high-precision applications."
msgstr ""
" , "
":mod:`decimal` ."
#: ../Doc/tutorial/floatingpoint.rst:156
msgid ""
"Another form of exact arithmetic is supported by the :mod:`fractions` "
"module which implements arithmetic based on rational numbers (so the "
"numbers like 1/3 can be represented exactly)."
msgstr ""
" :mod:`fractions` ( 1/3 "
" )."
#: ../Doc/tutorial/floatingpoint.rst:160
msgid ""
"If you are a heavy user of floating point operations you should take a "
"look at the Numerical Python package and many other packages for "
"mathematical and statistical operations supplied by the SciPy project. "
"See ."
msgstr ""
" Numerical Python SciPy "
" . ."
#: ../Doc/tutorial/floatingpoint.rst:164
msgid ""
"Python provides tools that may help on those rare occasions when you "
"really *do* want to know the exact value of a float. The "
":meth:`float.as_integer_ratio` method expresses the value of a float as a"
" fraction::"
msgstr ""
" float * * . "
":meth:`float.as_integer_ratio` float ::"
#: ../Doc/tutorial/floatingpoint.rst:173
msgid ""
"Since the ratio is exact, it can be used to losslessly recreate the "
"original value::"
msgstr " , ::"
#: ../Doc/tutorial/floatingpoint.rst:179
msgid ""
"The :meth:`float.hex` method expresses a float in hexadecimal (base 16), "
"again giving the exact value stored by your computer::"
msgstr ""
":meth:`float.hex` float 16( 16) , ::"
#: ../Doc/tutorial/floatingpoint.rst:185
msgid ""
"This precise hexadecimal representation can be used to reconstruct the "
"float value exactly::"
msgstr " 16 float ::"
#: ../Doc/tutorial/floatingpoint.rst:191
msgid ""
"Since the representation is exact, it is useful for reliably porting "
"values across different versions of Python (platform independence) and "
"exchanging data with other languages that support the same format (such "
"as Java and C99)."
msgstr ""
" , ( ), ( "
"C99 ) ."
#: ../Doc/tutorial/floatingpoint.rst:195
msgid ""
"Another helpful tool is the :func:`math.fsum` function which helps "
"mitigate loss-of-precision during summation. It tracks \"lost digits\" "
"as values are added onto a running total. That can make a difference in "
"overall accuracy so that the errors do not accumulate to the point where "
"they affect the final total:"
msgstr ""
" :func:`math.fsum` . . "
" \" \" . "
" :"
#: ../Doc/tutorial/floatingpoint.rst:209
msgid "Representation Error"
msgstr " "
#: ../Doc/tutorial/floatingpoint.rst:211
msgid ""
"This section explains the \"0.1\" example in detail, and shows how you "
"can perform an exact analysis of cases like this yourself. Basic "
"familiarity with binary floating-point representation is assumed."
msgstr ""
" \"0.1\" , . "
" ."
#: ../Doc/tutorial/floatingpoint.rst:215
msgid ""
":dfn:`Representation error` refers to the fact that some (most, actually)"
" decimal fractions cannot be represented exactly as binary (base 2) "
"fractions. This is the chief reason why Python (or Perl, C, C++, Java, "
"Fortran, and many others) often won't display the exact decimal number "
"you expect."
msgstr ""
":dfn:` (Representation error)` (, ) ( 2) "
" . ( , C, C++, , ) "
" ."
#: ../Doc/tutorial/floatingpoint.rst:220
msgid ""
"Why is that? 1/10 is not exactly representable as a binary fraction. "
"Almost all machines today (November 2000) use IEEE-754 floating point "
"arithmetic, and almost all platforms map Python floats to IEEE-754 "
"\"double precision\". 754 doubles contain 53 bits of precision, so on "
"input the computer strives to convert 0.1 to the closest fraction it can "
"of the form *J*/2**\\ *N* where *J* is an integer containing exactly 53 "
"bits. Rewriting ::"
msgstr ""
" ? 1/10 . (2000 11) IEEE-754 "
" , float IEEE-754 \"\" . 754 53 "
" , 0.1 *J*/2**\\ *N* . "
"*J* 53 .::"
#: ../Doc/tutorial/floatingpoint.rst:229
msgid "as ::"
msgstr " ::"
#: ../Doc/tutorial/floatingpoint.rst:233
msgid ""
"and recalling that *J* has exactly 53 bits (is ``>= 2**52`` but ``< "
"2**53``), the best value for *N* is 56::"
msgstr ""
" , *J* 53 (``>= 2**52`` ``< 2**53`` ) , *N* "
"56::"
#: ../Doc/tutorial/floatingpoint.rst:239
msgid ""
"That is, 56 is the only value for *N* that leaves *J* with exactly 53 "
"bits. The best possible value for *J* is then that quotient rounded::"
msgstr ""
", 56 *J* 53 *N* . *J* "
"::"
#: ../Doc/tutorial/floatingpoint.rst:246
msgid ""
"Since the remainder is more than half of 10, the best approximation is "
"obtained by rounding up::"
msgstr " 10 , ::"
#: ../Doc/tutorial/floatingpoint.rst:252
msgid ""
"Therefore the best possible approximation to 1/10 in 754 double precision"
" is::"
msgstr " 754 1/10 ::"
#: ../Doc/tutorial/floatingpoint.rst:256
msgid ""
"Dividing both the numerator and denominator by two reduces the fraction "
"to::"
msgstr " ::"
#: ../Doc/tutorial/floatingpoint.rst:260
msgid ""
"Note that since we rounded up, this is actually a little bit larger than "
"1/10; if we had not rounded up, the quotient would have been a little bit"
" smaller than 1/10. But in no case can it be *exactly* 1/10!"
msgstr ""
" , 1/10 ; , 1/10 ."
" ** 1/10 !"
#: ../Doc/tutorial/floatingpoint.rst:264
msgid ""
"So the computer never \"sees\" 1/10: what it sees is the exact fraction "
"given above, the best 754 double approximation it can get::"
msgstr ""
" 1/10 \"\" : , 754 "
" ::"
#: ../Doc/tutorial/floatingpoint.rst:270
msgid ""
"If we multiply that fraction by 10\\*\\*55, we can see the value out to "
"55 decimal digits::"
msgstr " 10\\*\\*55 , 55 .::"
#: ../Doc/tutorial/floatingpoint.rst:276
msgid ""
"meaning that the exact number stored in the computer is equal to the "
"decimal value 0.1000000000000000055511151231257827021181583404541015625. "
"Instead of displaying the full decimal value, many languages (including "
"older versions of Python), round the result to 17 significant digits::"
msgstr ""
" "
"0.1000000000000000055511151231257827021181583404541015625 . "
" , ( ) 17 ::"
#: ../Doc/tutorial/floatingpoint.rst:284
msgid ""
"The :mod:`fractions` and :mod:`decimal` modules make these calculations "
"easy::"
msgstr ":mod:`fractions` :mod:`decimal` ::"