Tôi đã gặp phải vấn đề / câu hỏi tương tự ngày hôm nay và tôi không hoàn toàn hài lòng với bất kỳ câu trả lời nào được đưa ra cho đến nay. Cốt lõi của câu hỏi dường như là: Show
Câu trả lời ngắn / giải pháp: Có.
Câu trả lời dài: Như Nosklo đã chỉ ra, không thể bảo toàn đầu vào của người dùng sau khi nó được chuyển đổi thành float. Mặc dù có thể làm tròn giá trị đó với độ chính xác hợp lý và chuyển đổi nó thành thập phân. Trong trường hợp của tôi, tôi chỉ cần 2 đến 4 chữ số sau khi phân tách, nhưng chúng cần phải chính xác. Hãy xem xét kiểm tra Cổ điển 0,1 + 0,2 == 0,3.
Bây giờ chúng ta hãy làm điều này với chuyển đổi sang thập phân (ví dụ hoàn chỉnh):
Câu trả lời của Ryabchenko Alexander thực sự hữu ích cho tôi. Nó chỉ thiếu một cách để tự động thiết lập độ chính xác - một tính năng tôi muốn (và cũng có thể cần). Câu hỏi thường gặp về tài liệu thập phân đưa ra một ví dụ về cách xây dựng chuỗi đối số cần thiết cho Quantize ():
Đây là cách các số trông giống như được in với 18 chữ số sau khi phân tách (đến từ lập trình C Tôi thích các biểu thức python ưa thích):
Và cuối cùng tôi muốn biết độ chính xác nào mà so sánh vẫn hoạt động:
15 dường như là một mặc định tốt cho độ chính xác tối đa. Điều đó sẽ hoạt động trên hầu hết các hệ thống. Nếu bạn cần thêm thông tin, hãy thử:
Với Float có 53 bit Mantissa trên hệ thống của tôi, tôi đã tính toán số chữ số thập phân:
Điều đó cho tôi biết với 53 bit chúng tôi nhận được gần 16 chữ số. Vì vậy, 15 IST tốt cho giá trị chính xác và luôn luôn hoạt động. 16 là dễ bị lỗi và 17 chắc chắn gây ra rắc rối (như đã thấy ở trên).almost 16 digits. So 15 ist fine for the precision value and should always work. 16 is error-prone and 17 definitly causes trouble (as seen above). Dù sao ... trong trường hợp cụ thể của tôi, tôi chỉ cần 2 đến 4 chữ số, nhưng là người cầu toàn, tôi rất thích điều tra điều này :-) Bất kỳ đề xuất / cải tiến / khiếu nại đều được hoan nghênh. Mã nguồn: lib/decimal.py Lib/decimal.py Mô -đun 1 cung cấp hỗ trợ cho số học điểm nổi tròn chính xác chính xác. Nó cung cấp một số lợi thế so với kiểu dữ liệu 2:
Thiết kế mô -đun tập trung vào ba khái niệm: số thập phân, bối cảnh cho số học và tín hiệu. Một số thập phân là bất biến. Nó có một dấu hiệu, số số hệ số và số mũ. Để giữ được ý nghĩa, các số số hệ số không cắt giảm các số không kéo dài. Số thập phân cũng bao gồm các giá trị đặc biệt như 5, 6 và 7. Tiêu chuẩn cũng khác biệt 8 với 9.Bối cảnh cho số học là một môi trường chỉ định độ chính xác, các quy tắc làm tròn, giới hạn đối với số mũ, cờ cho thấy kết quả hoạt động và các yếu tố hỗ trợ bẫy xác định xem các tín hiệu có được coi là ngoại lệ hay không. Các tùy chọn làm tròn bao gồm >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')0, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')1, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')2, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')3, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')4, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')5, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')6 và >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')7. Tín hiệu là các nhóm điều kiện đặc biệt phát sinh trong quá trình tính toán. Tùy thuộc vào nhu cầu của ứng dụng, tín hiệu có thể bị bỏ qua, được coi là thông tin hoặc được coi là ngoại lệ. Các tín hiệu trong mô -đun thập phân là: >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')8, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision2, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision3, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision4, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision5 và >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision6. Đối với mỗi tín hiệu có một cờ và một bộ tạo bẫy. Khi một tín hiệu gặp phải, cờ của nó được đặt thành một, sau đó, nếu bộ kích hoạt bẫy được đặt thành một, một ngoại lệ được nâng lên. Cờ bị dính, vì vậy người dùng cần đặt lại chúng trước khi theo dõi tính toán. Xem thêm
Hướng dẫn bắt đầu nhanhViệc bắt đầu sử dụng số thập phân thông thường là nhập mô -đun, xem bối cảnh hiện tại với >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7 và, nếu cần, đặt các giá trị mới cho độ chính xác, làm tròn hoặc bẫy được bật: >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision Các trường hợp thập phân có thể được xây dựng từ số nguyên, dây, phao hoặc bộ dữ liệu. Xây dựng từ một số nguyên hoặc phao thực hiện chuyển đổi chính xác giá trị của số nguyên hoặc phao. Các số thập phân bao gồm các giá trị đặc biệt như 7 là viết tắt của không phải là một số, dương và âm 5 và 8: 0Nếu tín hiệu >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision6 bị mắc kẹt, sự pha trộn tình cờ của số thập phân và phao trong các hàm tạo hoặc so sánh đặt hàng sẽ gây ra một ngoại lệ: 1Mới trong phiên bản 3.3. Tầm quan trọng của một số thập phân mới được xác định chỉ bằng số lượng đầu vào. Độ chính xác bối cảnh và làm tròn chỉ phát huy tác dụng trong các hoạt động số học. 2Nếu vượt quá giới hạn nội bộ của phiên bản C, việc xây dựng số thập phân tăng >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9: 3Đã thay đổi trong phiên bản 3.3. Số thập phân tương tác tốt với phần lớn phần còn lại của Python. Dưới đây là một rạp xiếc bay thả nổi số thập phân nhỏ: 4Và một số chức năng toán học cũng có sẵn cho số thập phân: 5Phương pháp 03 làm tròn một số vào số mũ cố định. Phương pháp này rất hữu ích cho các ứng dụng tiền tệ thường làm tròn kết quả đến một số địa điểm cố định: 6Như được hiển thị ở trên, hàm >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7 truy cập vào bối cảnh hiện tại và cho phép các cài đặt được thay đổi. Cách tiếp cận này đáp ứng nhu cầu của hầu hết các ứng dụng. Đối với công việc nâng cao hơn, có thể hữu ích để tạo bối cảnh thay thế bằng cách sử dụng hàm tạo ngữ cảnh (). Để thực hiện hoạt động thay thế, hãy sử dụng hàm 05.Theo tiêu chuẩn, mô -đun 1 cung cấp hai bối cảnh tiêu chuẩn sẵn sàng sử dụng, 07 và 08. Cái trước đặc biệt hữu ích cho việc gỡ lỗi vì nhiều bẫy được bật: 7Bối cảnh cũng có cờ tín hiệu để theo dõi các điều kiện đặc biệt gặp phải trong quá trình tính toán. Các cờ vẫn được đặt cho đến khi được xóa rõ ràng, vì vậy tốt nhất là xóa các cờ trước mỗi bộ tính toán được giám sát bằng cách sử dụng phương thức 09. 8Mục nhập cờ cho thấy mức độ gần đúng hợp lý với 10 được làm tròn (các chữ số vượt quá độ chính xác ngữ cảnh đã bị vứt đi) và kết quả là không chính xác (một số chữ số bị loại bỏ là không khác).Các bẫy riêng lẻ được đặt bằng cách sử dụng từ điển trong trường 11 của bối cảnh: 9Hầu hết các chương trình điều chỉnh bối cảnh hiện tại chỉ một lần, khi bắt đầu chương trình. Và, trong nhiều ứng dụng, dữ liệu được chuyển đổi thành 12 với một diễn viên duy nhất bên trong một vòng lặp. Với bối cảnh được đặt và số thập phân được tạo ra, phần lớn chương trình thao túng dữ liệu không khác gì với các loại số Python khác.Đối tượng thập phânLớp ________ 113 ________ 114 (value = '0', bối cảnh = none) ¶(value='0', context=None)¶Xây dựng một đối tượng 12 mới dựa trên giá trị.Giá trị có thể là một số nguyên, chuỗi, tuple, 2 hoặc đối tượng 12 khác. Nếu không có giá trị nào được đưa ra, trả về 18. Nếu giá trị là một chuỗi, nó sẽ phù hợp với cú pháp chuỗi số thập phân sau khi dẫn đầu và theo dõi các ký tự khoảng trắng, cũng như các dấu gạch dưới trong suốt, được loại bỏ: 0Các chữ số thập phân Unicode khác cũng được cho phép trong đó 19 xuất hiện ở trên. Chúng bao gồm các chữ số thập phân từ các bảng chữ cái khác nhau khác nhau (ví dụ, các chữ số tiếng Ả Rập và Devanāgarī) cùng với các chữ số fullwidth 20 đến 21.Nếu giá trị là 22, nó sẽ có ba thành phần, một dấu hiệu ( 23 cho dương hoặc 24 cho âm), 22 của các chữ số và số mũ số nguyên. Ví dụ: 26 trả về 27.Nếu giá trị là 2, giá trị điểm nổi nhị phân sẽ được chuyển đổi một cách không tổn thất thành tương đương thập phân chính xác của nó. Chuyển đổi này thường có thể yêu cầu 53 chữ số trở lên chính xác. Ví dụ, 29 chuyển đổi thành 30.Độ chính xác bối cảnh không ảnh hưởng đến số lượng được lưu trữ. Điều đó được xác định riêng bởi số chữ số trong giá trị. Ví dụ, 31 ghi lại tất cả năm số không ngay cả khi độ chính xác ngữ cảnh chỉ là ba.Mục đích của đối số ngữ cảnh là xác định phải làm gì nếu giá trị là một chuỗi không định dạng. Nếu bối cảnh bẫy >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9, một ngoại lệ sẽ được nâng lên; Mặt khác, hàm tạo trả về một số thập phân mới với giá trị 7.Sau khi được xây dựng, các đối tượng 12 là bất biến.Thay đổi trong phiên bản 3.2: Đối số cho hàm tạo hiện được phép là một ví dụ 2 instance.Đã thay đổi trong phiên bản 3.3: 2 arguments raise an exception if the >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision6 trap is set. By default the trap is off. Đã thay đổi trong phiên bản 3.6: Dấu gạch dưới được phép nhóm, như với các chữ ký tích hợp và dấu phẩy động trong mã.Underscores are allowed for grouping, as with integral and floating-point literals in code. Các đối tượng điểm nổi thập phân chia sẻ nhiều thuộc tính với các loại số tích hợp khác như 2 và 39. Tất cả các hoạt động toán học thông thường và các phương pháp đặc biệt được áp dụng. Tương tự như vậy, các đối tượng thập phân có thể được sao chép, ngâm, in, được sử dụng làm khóa từ điển, được sử dụng làm các yếu tố đã đặt, so sánh, sắp xếp và ép buộc sang loại khác (chẳng hạn như 2 hoặc 39).Có một số khác biệt nhỏ giữa số học trên các đối tượng thập phân và số học trên số nguyên và phao. Khi toán tử còn lại 42 được áp dụng cho các đối tượng thập phân, dấu hiệu của kết quả là dấu hiệu của cổ tức chứ không phải là dấu hiệu của ước số: 1Toán tử phân chia số nguyên 43 hoạt động tương tự, trả về phần số nguyên của thương số thực (cắt ngắn về 0) thay vì sàn của nó, để bảo tồn danh tính thông thường 44: 2Các toán tử 42 và 43 thực hiện các hoạt động 47 và 48 (tương ứng) như được mô tả trong đặc điểm kỹ thuật.Các đối tượng thập phân thường không thể được kết hợp với các phao hoặc các trường hợp 49 trong các hoạt động số học: ví dụ, một nỗ lực để thêm 12 vào 2, chẳng hạn, sẽ tăng 52. Tuy nhiên, có thể sử dụng các toán tử so sánh Python, để so sánh một ví dụ 12 54 với một số khác 55. Điều này tránh kết quả khó hiểu khi thực hiện so sánh bình đẳng giữa các số loại khác nhau.Thay đổi trong phiên bản 3.2: So sánh loại hỗn hợp giữa các trường hợp 12 instances and other numeric types are now fully supported.Ngoài các thuộc tính số tiêu chuẩn, các đối tượng điểm nổi thập phân cũng có một số phương pháp chuyên dụng: ________ 157 ()()¶Trả về số mũ được điều chỉnh sau khi chuyển ra hệ số các chữ số bên phải của hệ số cho đến khi chỉ còn lại chữ số chì: 58 trả về bảy. Được sử dụng để xác định vị trí của chữ số quan trọng nhất đối với điểm thập phân. ________ 159 ()()¶Trả về một cặp 60 số nguyên đại diện cho trường hợp 12 đã cho là một phần, theo mức thấp nhất và với mẫu số tích cực:
3Việc chuyển đổi là chính xác. Nâng cao Overflowerror về Infinities và ValueError trên Nans. Mới trong phiên bản 3.6. ________ 162 ()()¶Trả về một đại diện tuple có tên của số: 63.named
tuple representation of the number: 63. ________ 164 ()()¶Trả về mã hóa kinh điển của đối số. Hiện tại, việc mã hóa một ví dụ 12 luôn luôn là kinh điển, vì vậy hoạt động này trả về đối số của nó không thay đổi. ________ 166 (Khác, bối cảnh = Không) ¶(other, context=None)¶So sánh các giá trị của hai trường hợp thập phân. 67 trả về một ví dụ thập phân và nếu một trong hai toán hạng là NAN thì kết quả là NAN: 4 ________ 168 (Khác, bối cảnh = Không) ¶(other,
context=None)¶Hoạt động này giống hệt với phương pháp 67, ngoại trừ tất cả tín hiệu NANS. Đó là, nếu cả hai toán hạng không phải là một NAN báo hiệu thì bất kỳ toán hạng NAN yên tĩnh nào cũng được đối xử như thể đó là một NAN báo hiệu. ________ 170 (Khác, bối cảnh = Không) ¶(other, context=None)¶So sánh hai toán hạng bằng cách sử dụng biểu diễn trừu tượng của chúng thay vì giá trị số của chúng. Tương tự như phương pháp 67, nhưng kết quả đưa ra tổng số đặt hàng trên các trường hợp 12. Hai trường hợp 12 có cùng giá trị số nhưng các biểu diễn khác nhau so sánh không đồng đều trong thứ tự này: 5Nans yên tĩnh và báo hiệu cũng được bao gồm trong tổng số đơn đặt hàng. Kết quả của chức năng này là 18 nếu cả hai toán hạng có cùng một biểu diễn, 75 nếu toán hạng đầu tiên thấp hơn trong tổng thứ tự so với thứ hai và 76 nếu toán hạng đầu tiên cao hơn trong tổng số thứ tự so với toán hạng thứ hai. Xem thông số kỹ thuật để biết chi tiết về tổng số đơn đặt hàng.Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có làm tròn nào được thực hiện. Như một ngoại lệ, phiên bản C có thể tăng không hợp lệ nếu toán hạng thứ hai không thể được chuyển đổi chính xác. ________ 177 (Khác, bối cảnh = Không) ¶(other, context=None)¶So sánh hai toán hạng bằng cách sử dụng biểu diễn trừu tượng của chúng thay vì giá trị của chúng như trong 78, nhưng bỏ qua dấu hiệu của mỗi toán hạng. 79 tương đương với 80.Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có làm tròn nào được thực hiện. Như một ngoại lệ, phiên bản C có thể tăng không hợp lệ nếu toán hạng thứ hai không thể được chuyển đổi chính xác. ________ 177 (Khác, bối cảnh = Không) ¶()¶So sánh hai toán hạng bằng cách sử dụng biểu diễn trừu tượng của chúng thay vì giá trị của chúng như trong 78, nhưng bỏ qua dấu hiệu của mỗi toán hạng. 79 tương đương với 80. ________ 181 ()()¶Chỉ cần trả lại bản thân, phương pháp này chỉ tuân thủ đặc tả số thập phân. ________ 182 ()()¶Trả về giá trị tuyệt đối của đối số. Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có cách làm tròn nào được thực hiện. ________ 183 ()(other, context=None)¶Trả lại sự phủ định của đối số. Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có cách làm tròn nào được thực hiện. 6Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có làm tròn nào được thực hiện. Như một ngoại lệ, phiên bản C có thể tăng không hợp lệ nếu toán hạng thứ hai không thể được chuyển đổi chính xác. ________ 184 (Khác, bối cảnh = Không) ¶(context=None)¶Trả về một bản sao của toán hạng đầu tiên với dấu hiệu được đặt giống như dấu hiệu của toán hạng thứ hai. Ví dụ: 7 ________ 185 (bối cảnh = không) ¶(f)¶Trả về giá trị của hàm số mũ (tự nhiên) 86 ở số đã cho. Kết quả được làm tròn chính xác bằng chế độ làm tròn >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')4. ClassMethod ________ 188 (f) Hàm tạo thay thế chỉ chấp nhận các trường hợp 2 hoặc 39.Lưu ý 91 không giống như 92. Vì 0,1 không thể đại diện chính xác trong điểm nổi nhị phân, giá trị được lưu trữ dưới dạng giá trị đại diện gần nhất là 93. Giá trị tương đương đó trong thập phân là 94. 8Ghi chú Từ Python 3.2 trở đi, một ví dụ 12 cũng có thể được xây dựng trực tiếp từ 2.(other, third,
context=None)¶Mới trong phiên bản 3.1. 9 ________ 197 (Khác, thứ ba, bối cảnh = Không) ¶()¶Nội dung nhân lên. Tự trả lại*Khác+thứ ba không có sự làm tròn của sản phẩm trung gian tự*khác. ________ 198 ()()¶Trả về 99 Nếu đối số là chính tắc và 00 khác. Hiện tại, một ví dụ 12 luôn luôn có kinh điển, vì vậy hoạt động này luôn trả về 99. ________ 203 ()()¶Trả về 99 Nếu đối số là một số hữu hạn và 00 nếu đối số là vô cực hoặc NAN. ________ 206 ()()¶Trả về 99 Nếu đối số là vô cùng dương hoặc âm và 00 khác. ________ 209 ()(context=None)¶Trả về 99 Nếu đối số là một NAN (yên tĩnh hoặc tín hiệu) và 00 khác. ________ 212 (bối cảnh = không) ¶()¶Trả về 99 Nếu đối số là số hữu hạn bình thường. Trả về 00 nếu đối số bằng không, không bình thường, vô hạn hoặc NAN. ________ 215 ()()¶Trả lại 99 Nếu cuộc tranh luận là một NAN yên tĩnh và 00 khác. ________ 218 ()()¶Trả về 99 Nếu đối số có dấu âm và 00 khác. Lưu ý rằng cả Zeros và Nans đều có thể mang dấu hiệu. ________ 221 ()(context=None)¶Trả về 99 Nếu đối số là NAN và 00 báo hiệu. ________ 224 (bối cảnh = không) ¶()¶Trả về 99 Nếu đối số là không bình thường và 00 khác. ________ 227 ()(context=None)¶Trả về 99 Nếu đối số là (dương hoặc âm) bằng không và 00 khác. ________ 230 (bối cảnh = không) ¶(context=None)¶Trả về logarit tự nhiên (cơ sở E) của toán hạng. Kết quả được làm tròn chính xác bằng chế độ làm tròn >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')4. ________ 232 (bối cảnh = không) ¶(context=None)¶ Trả lại cơ sở mười logarit của toán hạng. Kết quả được làm tròn chính xác bằng chế độ làm tròn >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')4. ________ 234 (bối cảnh = không) ¶(other, context=None)¶ Đối với một số khác nhau, hãy trả về số mũ được điều chỉnh của toán hạng của nó dưới dạng ví dụ 12. Nếu toán hạng bằng 0 thì 36 sẽ được trả về và cờ >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0 được nâng lên. Nếu toán hạng là vô cực thì 38 sẽ được trả về.Logical operands). The result is the digit-wise 41 of the two operands.________ 242 (bối cảnh = không) ¶(context=None)¶ 43 là một hoạt động hợp lý. Kết quả là đảo ngược chữ số của toán hạng. ________ 244 (Khác, bối cảnh = Không) ¶(other, context=None)¶ 45 là một hoạt động logic có hai toán hạng logic (xem các toán hạng logic). Kết quả là chữ số 46 của hai toán hạng.Logical operands). The result is the digit-wise 46 of the two operands. ________ 247 (Khác, bối cảnh = Không) ¶(other,
context=None)¶ 48 là một hoạt động logic có hai toán hạng logic (xem các toán hạng logic). Kết quả là độc quyền chữ số hoặc của hai toán hạng.Logical operands). The result is the digit-wise exclusive or of the two operands. ________ 249 (Khác, bối cảnh = Không) ¶(other,
context=None)¶Giống như 50 ngoại trừ quy tắc làm tròn ngữ cảnh được áp dụng trước khi trả về và các giá trị 7 được báo hiệu hoặc bỏ qua (tùy thuộc vào ngữ cảnh và liệu chúng có báo hiệu hay yên tĩnh). ________ 252 (Khác, bối cảnh = Không) ¶(other, context=None)¶Tương tự như phương pháp 53, nhưng so sánh được thực hiện bằng cách sử dụng các giá trị tuyệt đối của các toán hạng. ________ 254 (Khác, bối cảnh = Không) ¶(other, context=None)¶Giống như 55 ngoại trừ quy tắc làm tròn ngữ cảnh được áp dụng trước khi trả về và các giá trị 7 được báo hiệu hoặc bỏ qua (tùy thuộc vào ngữ cảnh và liệu chúng có báo hiệu hay yên tĩnh). ________ 257 (Khác, bối cảnh = Không) ¶(other, context=None)¶Tương tự như phương pháp 58, nhưng so sánh được thực hiện bằng cách sử dụng các giá trị tuyệt đối của các toán hạng. ________ 259 (bối cảnh = không) ¶(context=None)¶Trả về số lớn nhất có thể thể hiện trong bối cảnh đã cho (hoặc trong bối cảnh luồng hiện tại nếu không có ngữ cảnh nào được đưa ra) nhỏ hơn toán hạng đã cho. ________ 260 (bối cảnh = không) ¶(context=None)¶Trả về số nhỏ nhất có thể thể hiện trong bối cảnh đã cho (hoặc trong bối cảnh luồng hiện tại nếu không có ngữ cảnh nào được đưa ra) lớn hơn toán hạng đã cho. ________ 261 (Khác, bối cảnh = Không) ¶(other, context=None)¶Nếu hai toán hạng là không đồng đều, hãy trả lại số gần nhất với toán hạng đầu tiên theo hướng của toán hạng thứ hai. Nếu cả hai toán hạng đều bằng số, hãy trả về một bản sao của toán hạng đầu tiên với dấu hiệu được đặt giống như dấu hiệu của toán hạng thứ hai. ________ 262 (bối cảnh = không) ¶(context=None)¶Bình thường hóa số bằng cách tước các số không theo dõi ngoài cùng bên phải và chuyển đổi bất kỳ kết quả nào bằng 18 thành 64. Được sử dụng để tạo ra các giá trị kinh điển cho các thuộc tính của một lớp tương đương. Ví dụ, 65 và 66 đều bình thường hóa thành giá trị tương đương 67. ________ 268 (bối cảnh = không) ¶(context=None)¶Trả về một chuỗi mô tả lớp của toán hạng. Giá trị trả về là một trong mười chuỗi sau.
Trả về một giá trị bằng với toán hạng đầu tiên sau khi làm tròn và có số mũ của toán hạng thứ hai. 0Không giống như các hoạt động khác, nếu độ dài của hệ số sau khi hoạt động lượng tử hóa sẽ lớn hơn độ chính xác, thì >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 được báo hiệu. Điều này đảm bảo rằng, trừ khi có một điều kiện lỗi, số mũ được định lượng luôn bằng với hoạt động bên phải. Cũng không giống như các hoạt động khác, lượng tử hóa không bao giờ tín hiệu tăng, ngay cả khi kết quả là không bình thường và không chính xác. Nếu số mũ của toán hạng thứ hai lớn hơn so với đầu tiên thì làm tròn có thể là cần thiết. Trong trường hợp này, chế độ làm tròn được xác định bằng đối số 81 nếu được đưa ra, khác bởi đối số 82 đã cho; Nếu không có đối số nào được đưa ra chế độ làm tròn của bối cảnh luồng hiện tại được sử dụng.Một lỗi được trả về bất cứ khi nào số mũ kết quả lớn hơn 83 hoặc nhỏ hơn 84. ________ 285 ()()¶Trả về 86, radix (cơ sở) trong đó lớp 12 thực hiện tất cả số học của nó. Bao gồm để tương thích với đặc điểm kỹ thuật. ________ 288 (Khác, bối cảnh = Không) ¶(other, context=None)¶Trả lại phần còn lại từ việc chia cho bản thân cho người khác. Điều này khác với 89 ở chỗ dấu hiệu của phần còn lại được chọn để giảm thiểu giá trị tuyệt đối của nó. Chính xác hơn, giá trị trả về là 90 trong đó 91 là số nguyên gần nhất với giá trị chính xác của 92 và nếu hai số nguyên gần thì chẵn được chọn.Nếu kết quả bằng không thì dấu hiệu của nó sẽ là dấu hiệu của bản thân. 1 ________ 293 (khác, bối cảnh = không) ¶(other,
context=None)¶Trả về kết quả quay các chữ số của toán hạng đầu tiên bằng một lượng được chỉ định bởi toán hạng thứ hai. Toán tử thứ hai phải là một số nguyên trong phạm vi -Crive thông qua độ chính xác. Giá trị tuyệt đối của toán hạng thứ hai cung cấp số lượng địa điểm để xoay. Nếu toán hạng thứ hai là dương thì xoay ở bên trái; Nếu không thì xoay ở bên phải. Hệ số của toán hạng đầu tiên được đệm ở bên trái với số không có độ chính xác chiều dài nếu cần thiết. Dấu hiệu và số mũ của toán hạng đầu tiên không thay đổi. ________ 294 (Khác, bối cảnh = Không) ¶(other, context=None)¶Kiểm tra xem bản thân và người khác có cùng số mũ hay liệu cả hai đều là 7.Hoạt động này không bị ảnh hưởng bởi bối cảnh và im lặng: không có cờ nào được thay đổi và không có làm tròn nào được thực hiện. Như một ngoại lệ, phiên bản C có thể tăng không hợp lệ nếu toán hạng thứ hai không thể được chuyển đổi chính xác. ________ 296 (khác, bối cảnh = không) ¶(other, context=None)¶Trả lại toán hạng đầu tiên với số mũ được điều chỉnh theo thứ hai. Tương tự, trả về toán hạng đầu tiên nhân với 97. Toán tử thứ hai phải là một số nguyên. ________ 298 (Khác, bối cảnh = Không) ¶(other, context=None)¶Trả về kết quả của việc chuyển các chữ số của toán hạng đầu tiên bằng một lượng được chỉ định bởi toán hạng thứ hai. Toán tử thứ hai phải là một số nguyên trong phạm vi -Crive thông qua độ chính xác. Giá trị tuyệt đối của toán hạng thứ hai cho số lượng địa điểm thay đổi. Nếu toán hạng thứ hai là dương thì sự thay đổi ở bên trái; Nếu không thì sự thay đổi là bên phải. Các chữ số chuyển vào hệ số là số không. Dấu hiệu và số mũ của toán hạng đầu tiên không thay đổi. ________ 299 (bối cảnh = không) ¶(context=None)¶Trả lại căn bậc hai của đối số về độ chính xác đầy đủ. ________ 300 (bối cảnh = không) ¶(context=None)¶Chuyển đổi thành một chuỗi, sử dụng ký hiệu kỹ thuật nếu cần một số mũ. Kỹ thuật ký hiệu có số mũ là bội số của 3. Điều này có thể để lại tới 3 chữ số ở bên trái của vị trí thập phân và có thể yêu cầu thêm một hoặc hai số không kéo dài. Ví dụ, điều này chuyển đổi 01 thành 02. ________ 303 (làm tròn = không, bối cảnh = không) ¶(rounding=None, context=None)¶Giống hệt với phương pháp 04. Tên 05 đã được giữ để tương thích với các phiên bản cũ hơn. ________ 306 (làm tròn = không, bối cảnh = không) ¶(rounding=None,
context=None)¶Vòng tròn đến số nguyên gần nhất, báo hiệu >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 hoặc >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision2 khi thích hợp nếu xảy ra làm tròn. Chế độ làm tròn được xác định bởi tham số 81 nếu được đưa ra, khác bởi 82 đã cho. Nếu không tham số nào được đưa ra thì chế độ làm tròn của bối cảnh hiện tại được sử dụng. ________ 311 (làm tròn = không, bối cảnh = không) ¶(rounding=None,
context=None)¶Tròn đến số nguyên gần nhất mà không có tín hiệu >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 hoặc >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision2. Nếu được đưa ra, áp dụng làm tròn; Mặt khác, sử dụng phương pháp làm tròn trong bối cảnh được cung cấp hoặc bối cảnh hiện tại. Toán tử logicCác phương thức 40, 43, 45 và 48 mong đợi các đối số của họ là các toán hạng logic. Một toán hạng logic là một thể hiện 12 có số mũ và dấu hiệu cả bằng không và có các chữ số của họ đều là 23 hoặc 24.Đối tượng bối cảnh lorBối cảnh là môi trường cho các hoạt động số học. Họ chi phối độ chính xác, đặt các quy tắc để làm tròn, xác định tín hiệu nào được coi là ngoại lệ và giới hạn phạm vi cho số mũ. Mỗi luồng có ngữ cảnh hiện tại riêng được truy cập hoặc thay đổi bằng các hàm >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7 và 05: ________ 113 ________ 324 ()()¶Trả về bối cảnh hiện tại cho chủ đề hoạt động. ________ 113 ________ 326 (c)(c)¶Đặt bối cảnh hiện tại cho luồng hoạt động thành c. Bạn cũng có thể sử dụng câu lệnh 27 và hàm 28 để tạm thời thay đổi bối cảnh hoạt động. ________ 113 ________ 330 (ctx = none) ¶(ctx=None)¶Trả về Trình quản lý bối cảnh sẽ đặt bối cảnh hiện tại cho luồng hoạt động thành bản sao của CTX khi nhập vào thông báo và khôi phục bối cảnh trước đó khi thoát khỏi sự cố. Nếu không có ngữ cảnh nào được chỉ định, một bản sao của bối cảnh hiện tại được sử dụng. Ví dụ: mã sau đây đặt độ chính xác thập phân hiện tại thành 42 vị trí, thực hiện tính toán và sau đó tự động khôi phục bối cảnh trước đó: 2Bối cảnh mới cũng có thể được tạo bằng trình xây dựng 31 được mô tả dưới đây. Ngoài ra, mô-đun cung cấp ba bối cảnh được tạo sẵn: Lớp ________ 113 ________ 333¶Đây là một bối cảnh tiêu chuẩn được xác định bởi đặc tả số học thập phân chung. Độ chính xác được đặt thành chín. Làm tròn được đặt thành >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')5. Tất cả các cờ được xóa. Tất cả các bẫy được bật (được coi là ngoại lệ) ngoại trừ >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision2 và >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision3. Bởi vì nhiều bẫy được bật, bối cảnh này rất hữu ích cho việc gỡ lỗi. Lớp ________ 113 ________ 339¶Đây là một bối cảnh tiêu chuẩn được xác định bởi đặc tả số học thập phân chung. Độ chính xác được đặt thành chín. Làm tròn được đặt thành >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')4. Tất cả các cờ được xóa. Không có bẫy được bật (để các ngoại lệ không được nâng lên trong quá trình tính toán). Bởi vì các bẫy bị vô hiệu hóa, bối cảnh này rất hữu ích cho các ứng dụng thích có giá trị kết quả là 7 hoặc 5 thay vì nâng cao các ngoại lệ. Điều này cho phép một ứng dụng hoàn thành một cuộc chạy với sự hiện diện của các điều kiện nếu không nên tạm dừng chương trình. Lớp ________ 113 ________ 344¶Bối cảnh này được sử dụng bởi hàm tạo 31 làm nguyên mẫu cho các bối cảnh mới. Thay đổi một trường (độ chính xác như vậy) có tác dụng thay đổi mặc định cho các bối cảnh mới được tạo bởi hàm tạo 31.Bối cảnh này hữu ích nhất trong các môi trường đa luồng. Thay đổi một trong các trường trước khi các luồng được bắt đầu có tác dụng thiết lập các mặc định trên toàn hệ thống. Thay đổi các trường sau khi các luồng đã bắt đầu không được khuyến nghị vì nó sẽ yêu cầu đồng bộ hóa luồng để ngăn chặn các điều kiện chủng tộc. Trong các môi trường có ren đơn, tốt hơn là không sử dụng bối cảnh này. Thay vào đó, chỉ cần tạo bối cảnh rõ ràng như được mô tả dưới đây. Các giá trị mặc định là ________ 347 = ________ 348, ________ 281 = ________ 84 và đã kích hoạt bẫy cho >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision4, >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 và >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0. Ngoài ba bối cảnh được cung cấp, các bối cảnh mới có thể được tạo với hàm tạo 31. Lớp ________ 113 ________ 356 (prec = none, sunding = none, emin = none, emax = none, capitals = none, kẹp = không, cờ = không, bẫy = không) ¶(prec=None, rounding=None, Emin=None, Emax=None,
capitals=None, clamp=None, flags=None, traps=None)¶Tạo ra một bối cảnh mới. Nếu một trường không được chỉ định hoặc là 57, các giá trị mặc định được sao chép từ 58. Nếu trường cờ không được chỉ định hoặc là 57, tất cả các cờ đều được xóa.PREP là một số nguyên trong phạm vi [ 24, 61] đặt độ chính xác cho các hoạt động số học trong bối cảnh.Tùy chọn làm tròn là một trong những hằng số được liệt kê trong các chế độ làm tròn phần. Các trường bẫy và cờ liệt kê bất kỳ tín hiệu nào được đặt. Nói chung, bối cảnh mới chỉ nên đặt bẫy và để lại những lá cờ rõ ràng. Các trường Emin và Emax là các số nguyên chỉ định các giới hạn bên ngoài được phép cho số mũ. Emin phải nằm trong phạm vi [ 62, 23], Emax trong phạm vi [ 23, 65].Trường thủ đô là 23 hoặc 24 (mặc định). Nếu được đặt thành 24, số mũ được in bằng vốn 69; Mặt khác, chữ thường 70 được sử dụng: 71.Trường kẹp là 23 (mặc định) hoặc 24. Nếu được đặt thành 24, số mũ 70 của một thể hiện 12 có thể thể hiện trong bối cảnh này bị giới hạn nghiêm ngặt trong phạm vi 77. Nếu kẹp là 23 thì một điều kiện yếu hơn giữ: số mũ được điều chỉnh của ví dụ 12 là tối đa 83. Khi kẹp là 24, một số lượng bình thường lớn sẽ, nếu có thể, có số mũ của nó giảm và số số không tương ứng được thêm vào hệ số của nó, để phù hợp với các ràng buộc số mũ; Điều này bảo tồn giá trị của số nhưng mất thông tin về số không có dấu vết đáng kể. Ví dụ: 3Giá trị kẹp của 24 cho phép tương thích với các định dạng trao đổi thập phân có chiều rộng cố định được chỉ định trong IEEE 754.Lớp 31 định nghĩa một số phương pháp mục đích chung cũng như một số lượng lớn các phương pháp để thực hiện số học trực tiếp trong một bối cảnh nhất định. Ngoài ra, đối với mỗi phương pháp 12 được mô tả ở trên (ngoại trừ các phương thức 85 và 86) có một phương pháp 31 tương ứng. Ví dụ: đối với một ví dụ 31 89 và 12 54, 92 tương đương với 93. Mỗi phương thức 31 chấp nhận một số nguyên python (một ví dụ là 39) bất cứ nơi nào mà một ví dụ thập phân được chấp nhận. ________ 396 ()()¶Đặt lại tất cả các cờ thành 23. ________ 398 ()()¶Đặt lại tất cả các bẫy về 23.Mới trong phiên bản 3.3. ________ 400 ()()¶Trả lại một bản sao của bối cảnh. ________ 401 (num) ¶(num)¶Trả về một bản sao của số thập phân NUM. ________ 402 (num) ¶(num)¶Tạo một ví dụ thập phân mới từ num nhưng sử dụng bản thân làm bối cảnh. Không giống như hàm tạo 12, phương pháp độ chính xác bối cảnh, phương pháp làm tròn, cờ và bẫy được áp dụng cho việc chuyển đổi.Điều này rất hữu ích vì các hằng số thường được cung cấp cho một độ chính xác cao hơn so với ứng dụng cần thiết. Một lợi ích khác là làm tròn ngay lập tức loại bỏ các hiệu ứng ngoài ý muốn từ các chữ số vượt quá độ chính xác hiện tại. Trong ví dụ sau, sử dụng các đầu vào không có căn cứ có nghĩa là việc thêm 0 vào tổng có thể thay đổi kết quả: 4Phương pháp này thực hiện hoạt động số lượng của đặc tả IBM. Nếu đối số là một chuỗi, không được phép có khoảng trắng hoặc dấu gạch dưới hàng đầu. ________ 404 (f)(f)¶Tạo một ví dụ thập phân mới từ một float f nhưng làm tròn bằng cách sử dụng bản thân làm bối cảnh. Không giống như phương pháp lớp 05, phương pháp độ chính xác ngữ cảnh, phương pháp làm tròn, cờ và bẫy được áp dụng cho việc chuyển đổi. 5Mới trong phiên bản 3.1. ________ 406 ()()¶Trả về một giá trị bằng 07, là giá trị số mũ tối thiểu cho kết quả dưới mức. Khi dòng chảy xảy ra, số mũ được đặt thành 84. ________ 409 ()()¶Trả về một giá trị bằng 10.Cách tiếp cận thông thường để làm việc với số thập phân là tạo các trường hợp 12 và sau đó áp dụng các hoạt động số học diễn ra trong bối cảnh hiện tại cho luồng hoạt động. Một cách tiếp cận khác là sử dụng các phương thức bối cảnh để tính toán trong một bối cảnh cụ thể. Các phương pháp tương tự như các phương pháp cho lớp 12 và chỉ được kể lại ngắn gọn ở đây. ________ 413 (x)(x)¶Trả về giá trị tuyệt đối của x. ________ 414 (x, y) ¶(x, y)¶Trả lại tổng của x và y. ________ 164 (x)(x)¶Trả về cùng một đối tượng thập phân x. ________ 166 (x, y)(x, y)¶So sánh x và y bằng số. ________ 168 (x, y)(x, y)¶So sánh các giá trị của hai toán hạng bằng số. ________ 170 (x, y)(x, y)¶So sánh hai toán hạng bằng cách sử dụng đại diện trừu tượng của họ. ________ 177 (x, y) ¶(x, y)¶So sánh hai toán hạng bằng cách sử dụng biểu diễn trừu tượng của họ, bỏ qua dấu hiệu. ________ 182 (x)(x)¶Trả về một bản sao của x với dấu được đặt thành 0. ________ 183 (x)(x)¶Trả về một bản sao của X với dấu hiệu đảo ngược. ________ 184 (x, y) ¶(x, y)¶Sao chép dấu từ y đến x. ________ 423 (x, y)(x, y)¶Trả lại x chia cho y. ________ 424 (x, y) ¶(x, y)¶Trả lại x chia cho y, cắt ngắn thành một số nguyên. ________ 425 (x, y)(x, y)¶Chia hai số và trả về phần số nguyên của kết quả. ________ 185 (x)(x)¶Trả về 27. ________ 197 (x, y, z) ¶(x, y, z)¶Trả về x nhân với y, cộng với z. ________ 198 (x)(x)¶Trả về 99 nếu x là chính tắc; Nếu không, trả về 00. ________ 203 (x)(x)¶Trả về 99 nếu x là hữu hạn; Nếu không, trả về 00. ________ 206 (x)(x)¶Trả về 99 nếu x là vô hạn; Nếu không, trả về 00. ________ 209 (x)(x)¶Trả về 99 nếu x là qnan hoặc snan; Nếu không, trả về 00. ________ 212 (x)(x)¶Trả về 99 nếu x là số bình thường; Nếu không, trả về 00. ________ 215 (x)(x)¶Trả lại 99 nếu X là một nan yên tĩnh; Nếu không, trả về 00. ________ 218 (x)(x)¶Trả về 99 nếu x là âm; Nếu không, trả về 00. ________ 221 (x)(x)¶Trả về 99 nếu X là NAN báo hiệu; Nếu không, trả về 00. ________ 224 (x)(x)¶Trả về 99 nếu x là dưới mức; Nếu không, trả về 00. ________ 227 (x)(x)¶Trả về 99 nếu x bằng 0; Nếu không, trả về 00. ________ 230 (x)(x)¶Trả về logarit tự nhiên (cơ sở e) của x. ________ 232 (x)(x)¶Trả về cơ sở 10 logarit của x. ________ 234 (x)(x)¶Trả về số mũ của cường độ của toán hạng MSD MSD. ________ 239 (x, y)(x, y)¶Áp dụng hoạt động logic và giữa mỗi chữ số của toán hạng. ________ 242 (x)(x)¶Đảo ngược tất cả các chữ số trong x. ________ 244 (x, y) ¶(x, y)¶Áp dụng hoạt động logic hoặc giữa mỗi chữ số của toán hạng. ________ 247 (x, y) ¶(x, y)¶Áp dụng hoạt động logic XOR giữa mỗi chữ số của toán hạng. ________ 249 (x, y) ¶(x, y)¶So sánh hai giá trị bằng số và trả về tối đa. ________ 252 (x, y) ¶(x, y)¶So sánh các giá trị bằng số với dấu hiệu của chúng bị bỏ qua. ________ 254 (x, y) ¶(x, y)¶So sánh hai giá trị bằng số và trả về tối thiểu. ________ 257 (x, y) ¶(x, y)¶So sánh các giá trị bằng số với dấu hiệu của chúng bị bỏ qua. ________ 254 (x, y) ¶(x)¶So sánh hai giá trị bằng số và trả về tối thiểu. ________ 257 (x, y) ¶(x, y)¶________ 470 (x) Minus tương ứng với toán tử tiền tố Unary trừ trong Python.(x)¶________ 471 (x, y) ¶ Trả lại sản phẩm của X và Y.(x)¶________ 259 (x) Trả về số đại diện lớn nhất nhỏ hơn x.(x, y)¶________ 260 (x) Trả về số đại diện nhỏ nhất lớn hơn x.(x)¶________ 261 (x, y) Trả về số gần nhất với x, theo hướng về y.(x)¶________ 262 (x) Giảm x xuống dạng đơn giản nhất của nó.(x)¶________ 268 (x) Trả về một dấu hiệu của lớp x.(x, y, modulo=None)¶________ 477 (x) Cộng với tương ứng với toán tử PREFIX Plus trong Python. Hoạt động này áp dụng độ chính xác và làm tròn ngữ cảnh, vì vậy nó không phải là một hoạt động nhận dạng. 86 dẫn đến >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 và nếu >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 không bị mắc kẹt, thì kết quả là 89.Đã thay đổi trong phiên bản 3.3: Mô -đun C tính toán 90 in terms of the correctly rounded
91 and 92 functions. The result is well-defined but only “almost always correctly rounded”.Với ba đối số, tính toán 93. Đối với biểu mẫu đối số ba, các hạn chế sau đối với các đối số giữ:
Giá trị kết quả từ 98 bằng với giá trị sẽ thu được bằng cách tính toán 99 với độ chính xác không giới hạn, nhưng được tính toán hiệu quả hơn. Số mũ của kết quả bằng không, bất kể số mũ của 54, 55 và 81. Kết quả luôn luôn chính xác. ________ 279 (x, y)(x, y)¶Trả về một giá trị bằng x (tròn), có số mũ của y. ________ 285 ()()¶Chỉ cần trả lại 10, vì đây là thập phân, :) ________ 505 (x, y) ¶(x, y)¶Trả về phần còn lại từ bộ phận số nguyên. Dấu hiệu của kết quả, nếu khác không, giống như cổ tức ban đầu. ________ 288 (x, y)(x, y)¶Trả về 07, trong đó n là số nguyên gần nhất là giá trị chính xác của 08 (nếu kết quả là 0 thì dấu của nó sẽ là dấu hiệu của x). ________ 293 (x, y)(x,
y)¶Trả về một bản sao xoay của x, y lần. ________ 294 (x, y)(x, y)¶Trả về 99 Nếu hai toán hạng có cùng số mũ. ________ 296 (x, y)(x,
y)¶Trả về toán hạng đầu tiên sau khi thêm giá trị thứ hai exp của nó. ________ 298 (x, y)(x, y)¶Trả về một bản sao thay đổi của X, Y Times. ________ 299 (x)(x)¶Căn bậc hai của một số không âm đến độ chính xác ngữ cảnh. ________ 515 (x, y)(x, y)¶Trả về sự khác biệt giữa x và y. ________ 300 (x)(x)¶Chuyển đổi thành một chuỗi, sử dụng ký hiệu kỹ thuật nếu cần một số mũ. Kỹ thuật ký hiệu có số mũ là bội số của 3. Điều này có thể để lại tới 3 chữ số ở bên trái của vị trí thập phân và có thể yêu cầu thêm một hoặc hai số không kéo dài. ________ 306 (x)(x)¶Vòng vào một số nguyên. ________ 518 (x)(x)¶Chuyển đổi một số thành một chuỗi bằng cách sử dụng ký hiệu khoa học. Hằng số trongCác hằng số trong phần này chỉ liên quan đến mô -đun C. Chúng cũng được bao gồm trong phiên bản Python Pure Python để tương thích.
Giá trị là 99. Không dùng nữa, bởi vì Python bây giờ luôn có chủ đề.Không dùng nữa kể từ phiên bản 3.9. ________ 113 ________ 539¶Giá trị mặc định là 99. Nếu Python là 41, phiên bản C sử dụng một địa phương thay vì bối cảnh coroutine-local và giá trị là 00. Điều này nhanh hơn một chút trong một số kịch bản bối cảnh lồng nhau.Mới trong phiên bản 3.9: Được ba chiều đến 3,7 và 3,8.backported to 3.7 and 3.8. Chế độ làm tròn________ 113 ________ 544¶Vòng hướng về 5. ________ 113 ________ 547¶Vòng về phía 0. ________ 113 ________ 549¶Vòng quay về phía 6. ________ 113 ________ 552¶Vòng đến gần nhất với các mối quan hệ đi về phía 0. ________ 113 ________ 554¶Vòng đến gần nhất với các mối quan hệ đi đến gần nhất thậm chí số nguyên. ________ 113 ________ 556¶Vòng đến gần nhất với các mối quan hệ đi xa từ số không. ________ 113 ________ 558¶Làm tròn từ số không. ________ 113 ________ 560¶Làm tròn từ 0 nếu chữ số cuối cùng sau khi làm tròn về 0 sẽ là 0 hoặc 5; nếu không tròn về phía bằng không. Tín hiệu/Tín hiệu đại diện cho các điều kiện phát sinh trong quá trình tính toán. Mỗi tương ứng với một cờ bối cảnh và một trình tạo bẫy ngữ cảnh. Cờ bối cảnh được đặt bất cứ khi nào điều kiện gặp phải. Sau khi tính toán, các cờ có thể được kiểm tra cho các mục đích thông tin (ví dụ, để xác định xem việc tính toán có chính xác hay không). Sau khi kiểm tra các cờ, hãy chắc chắn xóa tất cả các cờ trước khi bắt đầu tính toán tiếp theo. Nếu bộ tạo bẫy bẫy ngữ cảnh được đặt cho tín hiệu, thì điều kiện này sẽ gây ra ngoại lệ python. Ví dụ: nếu bẫy >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0 được đặt, thì ngoại lệ >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0 được tăng lên khi gặp phải điều kiện. Lớp ________ 113 ________ 564¶ Thay đổi một số mũ để phù hợp với các ràng buộc đại diện. Thông thường, việc kẹp xảy ra khi một số mũ nằm ngoài bối cảnh giới hạn 65 và 83. Nếu có thể, số mũ được giảm để phù hợp bằng cách thêm số không vào hệ số. Lớp ________ 113 ________ 568¶Lớp cơ sở cho các tín hiệu khác và một lớp con của 69. Lớp ________ 113 ________ 571¶Báo hiệu sự phân chia của một số không vô hạn theo 0. Có thể xảy ra với sự phân chia, phân chia modulo hoặc khi nâng một số lên một sức mạnh tiêu cực. Nếu tín hiệu này không bị mắc kẹt, trả về 5 hoặc 6 với dấu hiệu được xác định bởi các đầu vào cho phép tính. Lớp ________ 113 ________ 575¶Chỉ ra rằng làm tròn xảy ra và kết quả là không chính xác. Tín hiệu khi các chữ số khác không bị loại bỏ trong quá trình làm tròn. Kết quả tròn được trả lại. Cờ tín hiệu hoặc bẫy được sử dụng để phát hiện khi kết quả không chính xác. Lớp ________ 113 ________ 577¶Một hoạt động không hợp lệ đã được thực hiện. Chỉ ra rằng một hoạt động đã được yêu cầu không có ý nghĩa. Nếu không bị mắc kẹt, trả về 7. Nguyên nhân có thể bao gồm: 6 Lớp ________ 113 ________ 580¶Tràn số. Cho biết số mũ lớn hơn 83 sau khi làm tròn đã xảy ra. Nếu không bị mắc kẹt, kết quả phụ thuộc vào chế độ làm tròn, hoặc kéo vào trong số lượng hữu hạn lớn nhất có thể đại diện hoặc làm tròn ra ngoài đến 5. Trong cả hai trường hợp, >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 và >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision2 cũng được báo hiệu. Lớp ________ 113 ________ 586¶ Làm tròn xảy ra mặc dù có thể không có thông tin bị mất. Báo hiệu bất cứ khi nào làm tròn loại bỏ các chữ số; Ngay cả khi các chữ số đó bằng không (chẳng hạn như làm tròn 87 đến 88). Nếu không bị mắc kẹt, trả về kết quả không thay đổi. Tín hiệu này được sử dụng để phát hiện mất các chữ số quan trọng. Lớp ________ 113 ________ 590¶Số mũ thấp hơn 65 trước khi làm tròn.Xảy ra khi kết quả hoạt động là dưới mức (số mũ quá nhỏ). Nếu không bị mắc kẹt, trả về kết quả không thay đổi. Lớp ________ 113 ________ 593¶Dòng chảy số với kết quả được làm tròn đến 0. Xảy ra khi một kết quả dưới mức được đẩy về 0 bằng cách làm tròn. >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 và >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision3 cũng được báo hiệu. Lớp ________ 113 ________ 597¶ Cho phép ngữ nghĩa chặt chẽ hơn để trộn phao và số thập phân. Nếu tín hiệu không bị mắc kẹt (mặc định), trộn các phao và số thập phân được cho phép trong hàm tạo 12, 99 và tất cả các toán tử so sánh. Cả chuyển đổi và so sánh là chính xác. Bất kỳ sự xuất hiện nào của một hoạt động hỗn hợp đều được ghi lại âm thầm bằng cách đặt >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision6 trong các cờ ngữ cảnh. Chuyển đổi rõ ràng với 01 hoặc 02 không đặt cờ.Mặt khác (tín hiệu bị mắc kẹt), chỉ so sánh bình đẳng và chuyển đổi rõ ràng là im lặng. Tất cả các hoạt động hỗn hợp khác tăng >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision6. Bảng sau đây tóm tắt phân cấp tín hiệu: 7Ghi chú điểm nổiGiảm thiểu lỗi làm tròn với độ chính xác tăngViệc sử dụng điểm nổi thập phân giúp loại bỏ lỗi biểu diễn thập phân (chính xác là biểu hiện chính xác 04); Tuy nhiên, một số hoạt động vẫn có thể gây ra lỗi làm tròn khi các chữ số khác không vượt quá độ chính xác cố định.Các ảnh hưởng của lỗi làm tròn có thể được khuếch đại bằng cách bổ sung hoặc trừ các số lượng gần như bù đắp dẫn đến mất ý nghĩa. Knuth cung cấp hai ví dụ mang tính hướng dẫn trong đó số học điểm nổi tròn với độ chính xác không đủ gây ra sự cố của các thuộc tính liên kết và phân phối của việc bổ sung: 8Mô -đun 1 cho phép khôi phục danh tính bằng cách mở rộng độ chính xác đủ để tránh mất ý nghĩa: 9Giá trị đặc biệtHệ thống số cho mô -đun 1 cung cấp các giá trị đặc biệt bao gồm 7, 08, 6, 5 và hai số 0, 9 và 8.Tính không đồng nhất có thể được xây dựng trực tiếp với: 38. Ngoài ra, chúng có thể phát sinh từ việc chia cho 0 khi tín hiệu >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision0 không bị mắc kẹt. Tương tự như vậy, khi tín hiệu >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision4 không bị mắc kẹt, vô cực có thể là kết quả của việc làm tròn vượt quá giới hạn của số đại diện lớn nhất. Các tính không đồng thời được ký kết (affine) và có thể được sử dụng trong các hoạt động số học nơi chúng được đối xử là những con số rất lớn, không xác định. Chẳng hạn, việc thêm một hằng số vào vô cực cho kết quả vô hạn khác. Một số hoạt động không xác định và trả về 7 hoặc nếu tín hiệu >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 bị mắc kẹt, hãy tăng một ngoại lệ. Ví dụ: 18 trả về 7 có nghĩa là không phải là một số. Sự đa dạng của 7 này là yên tĩnh và, một khi được tạo ra, sẽ chảy qua các tính toán khác luôn dẫn đến một 7 khác. Hành vi này có thể hữu ích cho một loạt các tính toán đôi khi bị thiếu đầu vào - nó cho phép tính toán tiến hành trong khi gắn cờ các kết quả cụ thể là không hợp lệ.Một biến thể là 08 báo hiệu thay vì giữ im lặng sau mỗi hoạt động. Đây là một giá trị trả lại hữu ích khi kết quả không hợp lệ cần làm gián đoạn tính toán để xử lý đặc biệt.Hành vi của các nhà khai thác so sánh Python có thể hơi ngạc nhiên khi có liên quan đến 7. Một bài kiểm tra cho sự bình đẳng trong đó một trong các toán hạng là một sự yên tĩnh hoặc tín hiệu 7 luôn trả về 00 (ngay cả khi thực hiện 26), trong khi một bài kiểm tra cho sự bất bình đẳng luôn trả về 99. Một nỗ lực để so sánh hai số thập phân bằng cách sử dụng bất kỳ toán tử 28, 29, 30 hoặc 31 nào sẽ tăng tín hiệu >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')9 nếu một trong hai toán hạng là 7 và trả về 00 nếu tín hiệu này không bị mắc kẹt. Lưu ý rằng đặc tả số học thập phân chung không chỉ định hành vi so sánh trực tiếp; Các quy tắc này để so sánh liên quan đến 7 đã được lấy từ tiêu chuẩn IEEE 854 (xem Bảng 3 trong Phần 5.7). Để đảm bảo tuân thủ các tiêu chuẩn nghiêm ngặt, thay vào đó, hãy sử dụng các phương thức 67 và 37.Các số không có chữ ký có thể là kết quả của các tính toán mà dòng chảy. Họ giữ các dấu hiệu sẽ dẫn đến nếu tính toán đã được thực hiện đến độ chính xác cao hơn. Vì cường độ của chúng bằng không, cả các số 0 dương và âm được coi là bằng nhau và dấu hiệu của chúng là thông tin. Ngoài hai số không có chữ ký khác biệt nhưng có nhiều biểu diễn khác nhau có số 0 với các giá trị khác nhau vẫn tương đương về giá trị. Điều này mất một chút làm quen. Đối với một mắt quen thuộc với các biểu diễn điểm nổi được chuẩn hóa, không rõ ràng rằng tính toán sau đây trả về một giá trị bằng 0: 0Làm việc với chủ đềHàm >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7 truy cập vào một đối tượng 31 khác nhau cho mỗi luồng. Có bối cảnh luồng riêng biệt có nghĩa là các luồng có thể thực hiện các thay đổi (chẳng hạn như 40) mà không can thiệp vào các luồng khác.Tương tự như vậy, hàm 05 tự động gán mục tiêu của nó cho luồng hiện tại.Nếu 05 chưa được gọi trước >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7, thì >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7 sẽ tự động tạo bối cảnh mới để sử dụng trong luồng hiện tại. Bối cảnh mới được sao chép từ bối cảnh nguyên mẫu gọi là DefaultContext. Để kiểm soát các mặc định để mỗi luồng sẽ sử dụng cùng một giá trị trong toàn bộ ứng dụng, hãy trực tiếp sửa đổi đối tượng DefaultContext. Điều này nên được thực hiện trước khi bất kỳ chủ đề nào được bắt đầu để có được một điều kiện cuộc đua giữa các luồng gọi >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision7. Ví dụ: 1Công thức nấu ăn¶Dưới đây là một vài công thức nấu ăn là chức năng tiện ích và thể hiện các cách để làm việc với lớp 12: 2Câu hỏi thường gặp về thập phânQ. Nó là cồng kềnh để loại 47. Có cách nào để giảm thiểu việc gõ khi sử dụng trình thông dịch tương tác không?A. Một số người dùng viết tắt hàm tạo thành một chữ cái: 3Q. Trong một ứng dụng điểm cố định với hai vị trí thập phân, một số đầu vào có nhiều nơi và cần phải được làm tròn. Những người khác không được phép có các chữ số dư thừa và cần phải được xác nhận. Những phương pháp nào nên được sử dụng? A. Phương pháp 03 làm tròn đến một số vị trí thập phân cố định. Nếu bẫy >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 được đặt, nó cũng hữu ích để xác thực: 4 5 6 7Q. Khi tôi có hai đầu vào hai địa điểm hợp lệ, làm thế nào để duy trì bất biến đó trong suốt một ứng dụng? A. Một số hoạt động như bổ sung, trừ và phép nhân bằng một số nguyên sẽ tự động bảo tồn điểm cố định. Các hoạt động khác, như phép nhân phân chia và không số nguyên, sẽ thay đổi số lượng vị trí thập phân và cần phải được theo dõi với bước 03: 8Trong việc phát triển các ứng dụng điểm cố định, thật thuận tiện khi xác định các chức năng để xử lý bước 03: 9 0Q. Có nhiều cách để thể hiện cùng một giá trị. Các số 52, 53, 54 và 55 đều có cùng giá trị ở các quy tắc khác nhau. Có cách nào để biến chúng thành một giá trị kinh điển có thể nhận ra duy nhất không?A. Phương pháp 56 ánh xạ tất cả các giá trị tương đương vào một đại diện duy nhất: 1Q. Một số giá trị thập phân luôn in với ký hiệu theo cấp số nhân. Có cách nào để có được một đại diện không theo nhân viên không? A. Đối với một số giá trị, ký hiệu theo cấp số nhân là cách duy nhất để thể hiện số lượng vị trí quan trọng trong hệ số. Ví dụ, biểu thị 57 là 58 giữ giá trị không đổi nhưng không thể hiển thị ý nghĩa hai vị trí ban đầu.Nếu một ứng dụng không quan tâm đến việc theo dõi ý nghĩa, thì dễ dàng loại bỏ số mũ và số không, mất ý nghĩa, nhưng giữ cho giá trị không thay đổi: 2 3Q. Có cách nào để chuyển đổi một chiếc phao thông thường thành 12 không?A. Có, bất kỳ số điểm nổi nhị phân nào cũng có thể được biểu thị chính xác dưới dạng thập phân mặc dù chuyển đổi chính xác có thể có độ chính xác hơn so với trực giác sẽ đề xuất: 4H: Trong một tính toán phức tạp, làm thế nào tôi có thể đảm bảo rằng tôi đã nhận được một kết quả giả vì không đủ độ chính xác hoặc làm tròn dị thường. A. Mô -đun thập phân giúp bạn dễ dàng kiểm tra kết quả. Một thực tiễn tốt nhất là chạy lại các tính toán bằng cách sử dụng độ chính xác cao hơn và với các chế độ làm tròn khác nhau. Kết quả khác nhau cho thấy độ chính xác không đủ, các vấn đề chế độ làm tròn, đầu vào không điều hòa hoặc thuật toán không ổn định về số lượng. H: Tôi nhận thấy rằng độ chính xác ngữ cảnh được áp dụng cho kết quả hoạt động nhưng không phải là đầu vào. Có bất cứ điều gì để coi chừng khi trộn các giá trị của các quy định khác nhau? A. Có. Nguyên tắc là tất cả các giá trị được coi là chính xác và số học trên các giá trị đó cũng vậy. Chỉ có kết quả được làm tròn. Ưu điểm cho các đầu vào là những gì bạn gõ là những gì bạn nhận được. Một bất lợi là kết quả có thể trông kỳ lạ nếu bạn quên rằng các đầu vào đã được làm tròn: 5Giải pháp là tăng độ chính xác hoặc buộc làm tròn các đầu vào bằng cách sử dụng hoạt động Unary Plus: 6Ngoài ra, các đầu vào có thể được làm tròn khi tạo bằng phương pháp 60: 7Q. Việc triển khai CPython có nhanh cho số lượng lớn không? A. Có. Trong các triển khai Cpython và Pypy3, các phiên bản C/CFFI của mô-đun thập phân tích hợp thư viện LibMPDEC tốc độ cao để có độ chính xác theo độ chính xác chính xác số. Bối cảnh phải được điều chỉnh cho số học chính xác tùy ý chính xác. 65 và 83 phải luôn được đặt thành các giá trị tối đa, 64 phải luôn là 0 (mặc định). Cài đặt 47 yêu cầu một số chăm sóc.Cách tiếp cận dễ nhất để thử số học Bignum là sử dụng giá trị tối đa cho 47 cũng như 2: 8Đối với kết quả không chính xác, 61 quá lớn trên các nền tảng 64 bit và bộ nhớ có sẵn sẽ không đủ:
9Trên các hệ thống có tổng thể (ví dụ: Linux), một cách tiếp cận tinh vi hơn là điều chỉnh 47 theo lượng RAM có sẵn. Giả sử rằng bạn có 8GB RAM và mong đợi 10 toán hạng đồng thời bằng cách sử dụng tối đa 500MB mỗi lần: 0Nói chung (và đặc biệt là trên các hệ thống không có tổng thể), nên ước tính các giới hạn chặt chẽ hơn và đặt bẫy >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation]) >>> getcontext().prec = 7 # Set a new precision1 nếu tất cả các tính toán được dự kiến là chính xác.1 Mới trong phiên bản 3.3. 2Đã thay đổi trong phiên bản 3.9: Cách tiếp cận này hiện hoạt động cho tất cả các kết quả chính xác ngoại trừ các quyền hạn không định nghĩa.This approach now works for all exact results except for non-integer powers. Làm thế nào để bạn chuyển đổi float thành thập phân?Các quy tắc để chuyển đổi một số điểm nổi thành thập phân chỉ đơn giản là để đảo ngược chuyển đổi dấu thập phân sang nổi: Nếu số gốc là trong HEX, hãy chuyển đổi nó thành nhị phân.Tách thành các trường dấu hiệu, số mũ và mantissa.Trích xuất mantissa từ trường Mantissa, và khôi phục lại hàng đầu.reverse of the decimal to floating point conversion: If the original number is in hex, convert it to binary. Separate into the sign, exponent, and mantissa fields. Extract the mantissa from the mantissa field, and restore the leading one.
Làm thế nào để bạn chuyển đổi một số thập phân thành một chiếc phao trong Python?Có hai phương thức: float_number = float (decimal_number) float_number = decimal_number * 1.0.float_number = float ( decimal_number ) float_number = decimal_number * 1.0.
Làm thế nào để bạn in phao đến 2 số thập phân trong Python?Ví dụ 2: Làm thế nào để giới hạn phao đến hai số thập phân trong Python.. Sử dụng phần trăm%:- toán tử%của%được sử dụng để định dạng cũng như đặt độ chính xác trong Python..... Sử dụng định dạng ():- Đây là một cách khác để định dạng chuỗi để cài đặt độ chính xác .. Làm thế nào để bạn đổi thành thập phân trong Python?Trong Python, bạn chỉ có thể sử dụng hàm bin () để chuyển đổi từ giá trị thập phân sang giá trị nhị phân tương ứng của nó.Và tương tự, hàm int () để chuyển đổi một nhị phân thành giá trị thập phân của nó.use the bin() function to convert from a decimal value to its corresponding binary value. And similarly, the int() function to convert a binary to its decimal value. |