Skip to content

Commit 4fcd1df

Browse files
[po] auto sync
1 parent 463d8ce commit 4fcd1df

3 files changed

Lines changed: 99 additions & 9 deletions

File tree

.stat.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"translation": "1.70%", "updated_at": "2025-12-10T14:25:48Z"}
1+
{"translation": "1.74%", "updated_at": "2025-12-10T15:28:43Z"}

tutorial/floatingpoint.mo

12.4 KB
Binary file not shown.

tutorial/floatingpoint.po

Lines changed: 98 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,10 @@ msgid ""
393393
"statistical operations supplied by the SciPy project. See "
394394
"<https://scipy.org>."
395395
msgstr ""
396+
"Если вы активно пользуетесь вычислениями с плавающей точкой, вам следует "
397+
"взглянуть на пакет NumPy и многие другие пакеты для математических и "
398+
"статистических операций, поставляемые проектом SciPy. См. "
399+
"<https://scipy.org>."
396400

397401
#: ../../tutorial/floatingpoint.rst:181
398402
msgid ""
@@ -401,49 +405,69 @@ msgid ""
401405
":meth:`float.as_integer_ratio` method expresses the value of a float as a "
402406
"fraction:"
403407
msgstr ""
408+
"Python предоставляет инструменты, которые могут помочь в тех редких случаях,"
409+
" когда вы *действительно* хотите узнать точное значение числа с плавающей "
410+
"точкой. Метод :meth:`float.as_integer_ratio` выражает значение float в виде "
411+
"дроби:"
404412

405413
#: ../../tutorial/floatingpoint.rst:186
406414
msgid ""
407415
">>> x = 3.14159\n"
408416
">>> x.as_integer_ratio()\n"
409417
"(3537115888337719, 1125899906842624)"
410418
msgstr ""
419+
">>> x = 3.14159\n"
420+
">>> x.as_integer_ratio()\n"
421+
"(3537115888337719, 1125899906842624)"
411422

412423
#: ../../tutorial/floatingpoint.rst:192
413424
msgid ""
414425
"Since the ratio is exact, it can be used to losslessly recreate the original"
415426
" value:"
416427
msgstr ""
428+
"Поскольку это отношение точное, его можно использовать для воссоздания "
429+
"исходного значения без потерь:"
417430

418431
#: ../../tutorial/floatingpoint.rst:195
419432
msgid ""
420433
">>> x == 3537115888337719 / 1125899906842624\n"
421434
"True"
422435
msgstr ""
436+
">>> x == 3537115888337719 / 1125899906842624\n"
437+
"True"
423438

424439
#: ../../tutorial/floatingpoint.rst:200
425440
msgid ""
426441
"The :meth:`float.hex` method expresses a float in hexadecimal (base 16), "
427442
"again giving the exact value stored by your computer:"
428443
msgstr ""
444+
"Метод :meth:`float.hex` выражает число с плавающей точкой в "
445+
"шестнадцатеричном виде (по основанию 16), снова предоставляя точное "
446+
"значение, сохраненное на вашем компьютере:"
429447

430448
#: ../../tutorial/floatingpoint.rst:203
431449
msgid ""
432450
">>> x.hex()\n"
433451
"'0x1.921f9f01b866ep+1'"
434452
msgstr ""
453+
">>> x.hex()\n"
454+
"'0x1.921f9f01b866ep+1'"
435455

436456
#: ../../tutorial/floatingpoint.rst:208
437457
msgid ""
438458
"This precise hexadecimal representation can be used to reconstruct the float"
439459
" value exactly:"
440460
msgstr ""
461+
"Это точное шестнадцатеричное представление можно использовать для "
462+
"восстановления значения float в точности:"
441463

442464
#: ../../tutorial/floatingpoint.rst:211
443465
msgid ""
444466
">>> x == float.fromhex('0x1.921f9f01b866ep+1')\n"
445467
"True"
446468
msgstr ""
469+
">>> x == float.fromhex('0x1.921f9f01b866ep+1')\n"
470+
"True"
447471

448472
#: ../../tutorial/floatingpoint.rst:216
449473
msgid ""
@@ -452,6 +476,10 @@ msgid ""
452476
"data with other languages that support the same format (such as Java and "
453477
"C99)."
454478
msgstr ""
479+
"Поскольку представление является точным, оно полезно для надежного переноса "
480+
"значений между разными версиями Python (независимость от платформы) и обмена"
481+
" данными с другими языками, поддерживающими тот же формат (например, Java и "
482+
"C99)."
455483

456484
#: ../../tutorial/floatingpoint.rst:220
457485
msgid ""
@@ -461,6 +489,11 @@ msgid ""
461489
"difference in overall accuracy so that the errors do not accumulate to the "
462490
"point where they affect the final total:"
463491
msgstr ""
492+
"Ещё одним полезным инструментом является функция :func:`sum`, которая "
493+
"помогает уменьшить потерю точности во время суммирования. Она использует "
494+
"расширенную точность для промежуточных шагов округления по мере добавления "
495+
"значений к сумме. Это может повлиять на общую точность, предотвращая "
496+
"накопление ошибок до уровня, когда они влияют на итоговый результат:"
464497

465498
#: ../../tutorial/floatingpoint.rst:226
466499
msgid ""
@@ -469,6 +502,10 @@ msgid ""
469502
">>> sum([0.1] * 10) == 1.0\n"
470503
"True"
471504
msgstr ""
505+
">>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 1.0\n"
506+
"False\n"
507+
">>> sum([0.1] * 10) == 1.0\n"
508+
"True"
472509

473510
#: ../../tutorial/floatingpoint.rst:233
474511
msgid ""
@@ -478,6 +515,11 @@ msgid ""
478515
"uncommon cases where large magnitude inputs mostly cancel each other out "
479516
"leaving a final sum near zero:"
480517
msgstr ""
518+
"Функция :func:`math.fsum` идёт дальше и отслеживает все «потерянные цифры» "
519+
"при добавлении значений к сумме, так что результат подвергается только "
520+
"одному округлению. Это медленнее, чем :func:`sum`, но даёт большую точность "
521+
"в редких случаях, когда слагаемые большой величины в основном взаимно "
522+
"компенсируют друг друга, оставляя итоговую сумму близкой к нулю:"
481523

482524
#: ../../tutorial/floatingpoint.rst:239
483525
msgid ""
@@ -496,17 +538,34 @@ msgid ""
496538
">>> total # Straight addition has no correct digits!\n"
497539
"-0.0051575902860057365"
498540
msgstr ""
541+
">>> arr = [-0.10430216751806065, -266310978.67179024, 143401161448607.16,\n"
542+
"... -143401161400469.7, 266262841.31058735, -0.003244936839808227]\n"
543+
">>> float(sum(map(Fraction, arr))) # Точное суммирование с одним округлением\n"
544+
"8.042173697819788e-13\n"
545+
">>> math.fsum(arr) # Одно округление\n"
546+
"8.042173697819788e-13\n"
547+
">>> sum(arr) # Многократное округление с расширенной точностью\n"
548+
"8.042178034628478e-13\n"
549+
">>> total = 0.0\n"
550+
">>> for x in arr:\n"
551+
"... total += x # Многократное округление со стандартной точностью\n"
552+
"...\n"
553+
">>> total # Прямое сложение не даёт корректный результат!\n"
554+
"-0.0051575902860057365"
499555

500556
#: ../../tutorial/floatingpoint.rst:260
501557
msgid "Representation Error"
502-
msgstr ""
558+
msgstr "Ошибка представления"
503559

504560
#: ../../tutorial/floatingpoint.rst:262
505561
msgid ""
506562
"This section explains the \"0.1\" example in detail, and shows how you can "
507563
"perform an exact analysis of cases like this yourself. Basic familiarity "
508564
"with binary floating-point representation is assumed."
509565
msgstr ""
566+
"В этом разделе подробно объясняется пример «0.1» и показывается, как можно "
567+
"самостоятельно выполнить точный анализ подобных случаев. Предполагается "
568+
"базовое знакомство с двоичным представлением чисел с плавающей точкой."
510569

511570
#: ../../tutorial/floatingpoint.rst:266
512571
msgid ""
@@ -516,6 +575,11 @@ msgid ""
516575
"Fortran, and many others) often won't display the exact decimal number you "
517576
"expect."
518577
msgstr ""
578+
":dfn:`Ошибка представления` относится к тому факту, что некоторые (на самом "
579+
"деле большинство) десятичные дроби не могут быть представлены точно как "
580+
"двоичные дроби (по основанию 2). Это основная причина, по которой Python "
581+
"(или Perl, C, C++, Java, Fortran и многие другие) часто не отображает точное"
582+
" десятичное число, которое вы ожидаете."
519583

520584
#: ../../tutorial/floatingpoint.rst:271
521585
msgid ""
@@ -527,81 +591,105 @@ msgid ""
527591
"fraction it can of the form *J*/2**\\ *N* where *J* is an integer containing"
528592
" exactly 53 bits. Rewriting ::"
529593
msgstr ""
594+
"Почему так происходит? Число 1/10 нельзя точно представить как двоичную "
595+
"дробь. По крайней мере, с 2000 года почти все машины используют двоичную "
596+
"арифметику с плавающей точкой стандарта IEEE 754, и почти все платформы "
597+
"сопоставляют числа float в Python со значениями IEEE 754 binary64 «двойной "
598+
"точности». Эти значения имеют точность 53 бита, поэтому при вводе компьютер "
599+
"стремится преобразовать 0.1 в ближайшую дробь вида *J*/2**\\ *N*, где *J* — "
600+
"целое число, содержащее ровно 53 бита. Переписав ::"
530601

531602
#: ../../tutorial/floatingpoint.rst:280
532603
msgid "1 / 10 ~= J / (2**N)"
533-
msgstr ""
604+
msgstr "1 / 10 ~= J / (2**N)"
534605

535606
#: ../../tutorial/floatingpoint.rst:282
536607
msgid "as ::"
537-
msgstr ""
608+
msgstr "как ::"
538609

539610
#: ../../tutorial/floatingpoint.rst:284
540611
msgid "J ~= 2**N / 10"
541-
msgstr ""
612+
msgstr "J ~= 2**N / 10"
542613

543614
#: ../../tutorial/floatingpoint.rst:286
544615
msgid ""
545616
"and recalling that *J* has exactly 53 bits (is ``>= 2**52`` but ``< "
546617
"2**53``), the best value for *N* is 56:"
547618
msgstr ""
619+
"и учитывая, что *J* имеет ровно 53 бита (оно ``>= 2**52``, но ``< 2**53``), "
620+
"лучшее значение для *N* — это 56:"
548621

549622
#: ../../tutorial/floatingpoint.rst:289
550623
msgid ""
551624
">>> 2**52 <= 2**56 // 10 < 2**53\n"
552625
"True"
553626
msgstr ""
627+
">>> 2**52 <= 2**56 // 10 < 2**53\n"
628+
"True"
554629

555630
#: ../../tutorial/floatingpoint.rst:294
556631
msgid ""
557632
"That is, 56 is the only value for *N* that leaves *J* with exactly 53 bits."
558633
" The best possible value for *J* is then that quotient rounded:"
559634
msgstr ""
635+
"То есть 56 — единственное значение для *N*, при котором в *J* остаётся ровно"
636+
" 53 бита. Наилучшее возможное значение для *J* — это округленное частное:"
560637

561638
#: ../../tutorial/floatingpoint.rst:297
562639
msgid ""
563640
">>> q, r = divmod(2**56, 10)\n"
564641
">>> r\n"
565642
"6"
566643
msgstr ""
644+
">>> q, r = divmod(2**56, 10)\n"
645+
">>> r\n"
646+
"6"
567647

568648
#: ../../tutorial/floatingpoint.rst:303
569649
msgid ""
570650
"Since the remainder is more than half of 10, the best approximation is "
571651
"obtained by rounding up:"
572652
msgstr ""
653+
"Поскольку остаток больше половины от 10, наилучшее приближение получается "
654+
"округлением в большую сторону:"
573655

574656
#: ../../tutorial/floatingpoint.rst:306
575657
msgid ""
576658
">>> q+1\n"
577659
"7205759403792794"
578660
msgstr ""
661+
">>> q+1\n"
662+
"7205759403792794"
579663

580664
#: ../../tutorial/floatingpoint.rst:313
581665
msgid ""
582666
"Therefore the best possible approximation to 1/10 in IEEE 754 double "
583667
"precision is::"
584-
msgstr ""
668+
msgstr "Поэтому наилучшее приближение к 1/10 в двойной точности IEEE 754:"
585669

586670
#: ../../tutorial/floatingpoint.rst:316
587671
msgid "7205759403792794 / 2 ** 56"
588-
msgstr ""
672+
msgstr "7205759403792794 / 2 ** 56"
589673

590674
#: ../../tutorial/floatingpoint.rst:318
591675
msgid ""
592676
"Dividing both the numerator and denominator by two reduces the fraction to::"
593-
msgstr ""
677+
msgstr "Деление числителя и знаменателя на два уменьшает дробь до:"
594678

595679
#: ../../tutorial/floatingpoint.rst:320
596680
msgid "3602879701896397 / 2 ** 55"
597-
msgstr ""
681+
msgstr "3602879701896397 / 2 ** 55"
598682

599683
#: ../../tutorial/floatingpoint.rst:322
600684
msgid ""
601685
"Note that since we rounded up, this is actually a little bit larger than "
602686
"1/10; if we had not rounded up, the quotient would have been a little bit "
603687
"smaller than 1/10. But in no case can it be *exactly* 1/10!"
604688
msgstr ""
689+
"Обратите внимание: поскольку мы округлили в большую сторону, на самом деле "
690+
"это немного больше, чем 1/10; если бы мы не округляли в большую сторону, "
691+
"частное было бы немного меньше 1/10. Но ни в коем случае оно не может быть "
692+
"*ровно* 1/10!"
605693

606694
#: ../../tutorial/floatingpoint.rst:326
607695
msgid ""
@@ -614,6 +702,8 @@ msgid ""
614702
">>> 0.1 * 2 ** 55\n"
615703
"3602879701896397.0"
616704
msgstr ""
705+
">>> 0.1 * 2 ** 55\n"
706+
"3602879701896397.0"
617707

618708
#: ../../tutorial/floatingpoint.rst:334
619709
msgid ""

0 commit comments

Comments
 (0)