ROUND_HALF_UP Python

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về mô-đun Python

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
4 hỗ trợ số học dấu phẩy động thập phân được làm tròn chính xác nhanh

Giới thiệu về mô-đun thập phân Python

Nhiều số thập phân không có biểu diễn chính xác ở dạng dấu phẩy động nhị phân, chẳng hạn như 0. 1. Khi sử dụng những con số này trong các phép tính số học, bạn sẽ nhận được một kết quả mà mình không ngờ tới. Ví dụ

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)

đầu ra

0.30000000000000004

Code language: CSS (css)

kết quả là 0. 30000000000000004, không phải 0. 3

Để giải quyết vấn đề này, bạn sử dụng lớp

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 từ module

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
4 như sau

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)

đầu ra

0.3

Code language: CSS (css)

Đầu ra như mong đợi

Mô-đun Python

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
4 hỗ trợ số học hoạt động giống như số học bạn học ở trường

Không giống như số float, Python biểu thị chính xác số thập phân. Và tính chính xác chuyển sang số học. Ví dụ: biểu thức sau trả về chính xác 0. 0

________số 8

Bối cảnh thập phân

Số thập phân luôn liên kết với ngữ cảnh kiểm soát các khía cạnh sau

  • Độ chính xác trong một phép toán số học
  • thuật toán làm tròn

Theo mặc định, bối cảnh là toàn cầu. Bối cảnh toàn cầu là bối cảnh mặc định. Ngoài ra, bạn có thể đặt bối cảnh tạm thời sẽ có hiệu lực cục bộ mà không ảnh hưởng đến bối cảnh chung

Để lấy ngữ cảnh mặc định, bạn gọi hàm

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
8 từ mô-đun

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
4

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
1

Hàm

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
8 trả về ngữ cảnh mặc định, có thể là toàn cầu hoặc cục bộ

Để tạo ngữ cảnh mới sao chép từ ngữ cảnh khác, bạn sử dụng hàm

0.3

Code language: CSS (css)
1

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
4

0.3

Code language: CSS (css)
1 trả về ngữ cảnh mới được sao chép từ ngữ cảnh

0.3

Code language: CSS (css)
3 nếu được chỉ định

Sau khi nhận được đối tượng ngữ cảnh, bạn có thể truy cập độ chính xác và làm tròn thông qua thuộc tính ________ 64 và ________ 65 tương ứng

  • 0.3

    Code language: CSS (css)
    6. lấy hoặc đặt độ chính xác. ctx. pre là một số nguyên mặc định là 28
  • 0.3

    Code language: CSS (css)
    7. nhận hoặc thiết lập cơ chế làm tròn. Làm tròn là một chuỗi. Nó mặc định là

    0.3

    Code language: CSS (css)
    8. Lưu ý nổi cũng sử dụng cơ chế làm tròn này

Python cung cấp các cơ chế làm tròn sau

Làm trònMô tảROUND_UPVòng ra xa số 0ROUND_DOWNVòng về số 0ROUND_CEILINGVòng tới trần nhà (về phía dương vô cùng)ROUND_FLOORvòng tới sàn (về phía âm vô cùng)ROUND_HALF_UPVòng tới gần nhất, cách xa số 0ROUND_HALF_DOWNvòng tới gần nhất, liền với số 0ROUND_HALF_EVENVòng tới gần nhất, liên kết với chẵn (chữ số có nghĩa nhỏ nhất)

Ví dụ này minh họa cách lấy độ chính xác mặc định và làm tròn ngữ cảnh mặc định

0.30000000000000004

Code language: CSS (css)
2

đầu ra

0.30000000000000004

Code language: CSS (css)
3

Ví dụ sau đây cho thấy cơ chế làm tròn của

0.3

Code language: CSS (css)
8 có hiệu lực như thế nào

0.30000000000000004

Code language: CSS (css)
5

đầu ra

0.30000000000000004

Code language: CSS (css)
0

Nếu bạn thay đổi cách làm tròn thành

Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

Code language: JavaScript (javascript)
0, bạn sẽ nhận được một kết quả khác

0.30000000000000004

Code language: CSS (css)
1

đầu ra

0.30000000000000004

Code language: CSS (css)
2

Ví dụ sau đây cho bạn thấy cách sao chép ngữ cảnh mặc định và thay đổi cách làm tròn thành

Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

Code language: JavaScript (javascript)
0

0.30000000000000004

Code language: CSS (css)
3

đầu ra

0.30000000000000004

Code language: CSS (css)
4

Lưu ý rằng bối cảnh cục bộ không ảnh hưởng đến bối cảnh toàn cầu. Sau khối with, Python sử dụng cơ chế làm tròn mặc định

hàm tạo thập phân

Hàm tạo

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 cho phép bạn tạo một đối tượng

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 mới dựa trên một giá trị

0.30000000000000004

Code language: CSS (css)
5

Đối số

Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

Code language: JavaScript (javascript)
4 có thể là một số nguyên, chuỗi, tuple, float hoặc một đối tượng thập phân khác. Nếu bạn không cung cấp đối số giá trị, nó sẽ mặc định là

Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

Code language: JavaScript (javascript)
5

Nếu giá trị là một bộ, thì nó phải có ba thành phần. một dấu (0 cho số dương hoặc 1 cho số âm), một bộ chữ số và một số mũ nguyên

0.30000000000000004

Code language: CSS (css)
6

Ví dụ

0.30000000000000004

Code language: CSS (css)
7

Tuple có ba phần tử như sau

  • dấu hiệu là 0
  • chữ số là (3,1,4)
  • số mũ là -2

Do đó, bạn sẽ cần chuyển bộ dữ liệu sau cho hàm tạo

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5

0.30000000000000004

Code language: CSS (css)
8

đầu ra

0.30000000000000004

Code language: CSS (css)
9

Lưu ý rằng độ chính xác của ngữ cảnh thập phân chỉ ảnh hưởng đến phép toán số học, không ảnh hưởng đến hàm tạo

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5. Ví dụ

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
0

Khi bạn sử dụng số float không có biểu diễn float nhị phân chính xác, hàm tạo

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 không thể tạo biểu diễn thập phân chính xác. Ví dụ

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
1

đầu ra

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
2

Trong thực tế, bạn sẽ sử dụng một chuỗi hoặc một bộ để tạo một

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5

Phép toán số thập phân

Một số toán tử số học không hoạt động giống như số float hoặc số nguyên, chẳng hạn như div (

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
10) và mod (

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
11

Đối với số thập phân, toán tử

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
10 thực hiện phép chia cụt

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
3

Lớp

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 cung cấp một số phép toán như

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
14 và

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
15. Tuy nhiên, nó không có tất cả các chức năng được định nghĩa trong mô-đun

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
16

Khi bạn sử dụng các hàm từ mô-đun

x = 0.1 y = 0.1 z = 0.1 s = x + y + z print(s)

Code language: PHP (php)
16 cho các số thập phân, Python sẽ chuyển các đối tượng

import decimal from decimal import Decimal x = Decimal('0.1') y = Decimal('0.1') z = Decimal('0.1') s = x + y + z print(s)

Code language: JavaScript (javascript)
5 thành số float trước khi thực hiện các phép tính số học. Điều này dẫn đến mất độ chính xác được xây dựng trong các đối tượng thập phân

Tại sao Python vòng 2. 5 đến 2?

Ví dụ: 2. 5 sẽ được làm tròn thành 2, vì 2 là số chẵn gần nhất và 3. 5 sẽ được làm tròn thành 4.

Hàm int có làm tròn lên hoặc xuống Python không?

int làm tròn về 0 . Đối với x dương, nó giống như sàn, đối với x âm, nó giống như trần nhà. vòng tròn đến giải pháp gần nhất có thể. vòng 1. 49)=1 và làm tròn (1. 51)==2. Khi x nằm chính giữa hai số thì round(x) sẽ là số chẵn gần nhất.