Hướng dẫn how do you drop decimal places without rounding in python? - làm thế nào để bạn giảm số thập phân mà không làm tròn trong python?

30

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào tôi có thể lấy một biến nổi và kiểm soát phao đi bao xa mà không có vòng ()? Ví dụ.

w = float(1.678)

Tôi muốn lấy X và tạo các biến sau từ nó.

x = 1.67
y = 1.6
z = 1

Nếu tôi sử dụng các phương pháp tròn tương ứng:

x = round(w, 2) # With round I get 1.68 
y = round(y, 1) # With round I get 1.7
z = round(z, 0) # With round I get 2.0

Nó sẽ làm tròn và thay đổi các con số đến mức không sử dụng cho tôi. Tôi hiểu đây là điểm của vòng và nó hoạt động đúng. Làm thế nào tôi có thể nhận được thông tin mà tôi cần trong các biến X, Y, Z và vẫn có thể sử dụng chúng trong các phương trình khác ở định dạng float?

Hướng dẫn how do you drop decimal places without rounding in python? - làm thế nào để bạn giảm số thập phân mà không làm tròn trong python?

Mike Laren

7,85817 Huy hiệu vàng 50 Huy hiệu bạc69 Huy hiệu Đồng17 gold badges50 silver badges69 bronze badges

hỏi ngày 25 tháng 3 năm 2015 lúc 2:30Mar 25, 2015 at 2:30

2

Bạn có thể làm:

def truncate(f, n):
    return math.floor(f * 10 ** n) / 10 ** n

testing:

>>> f=1.923328437452
>>> [truncate(f, n) for n in range(7)]
[1.0, 1.9, 1.92, 1.923, 1.9233, 1.92332, 1.923328]

Đã trả lời ngày 25 tháng 3 năm 2015 lúc 14:00Mar 25, 2015 at 14:00

4

Một giải pháp siêu đơn giản là sử dụng chuỗi

x = float (str (w)[:-1])
y = float (str (w)[:-2])
z = float (str (w)[:-3])

Bất kỳ giải pháp thư viện điểm nổi nào cũng yêu cầu bạn tránh được một số vòng tròn, và sử dụng sàn/sức mạnh 10 để chọn ra số thập phân có thể có một chút lông bằng cách so sánh với những điều trên.

Đã trả lời ngày 25 tháng 3 năm 2015 lúc 3:01Mar 25, 2015 at 3:01

Hướng dẫn how do you drop decimal places without rounding in python? - làm thế nào để bạn giảm số thập phân mà không làm tròn trong python?

WakkadojowakkadojoWakkaDojo

4113 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges

2

Các số nguyên nhanh hơn để thao tác so với phao/đôi nhanh hơn dây. Trong trường hợp này, tôi đã cố gắng có được thời gian với cả hai cách tiếp cận:

  timeit.timeit(stmt = "float(str(math.pi)[:12])", setup = "import math", number = 1000000)

~1.1929605630000424

vì :

timeit.timeit(stmt = "math.floor(math.pi * 10 ** 10) / 10 ** 10", setup = "import math", number = 1000000)

~0.3455968870000561

Vì vậy, an toàn khi sử dụng toán học.

Đã trả lời ngày 6 tháng 2 năm 2020 lúc 21:15Feb 6, 2020 at 21:15

RajrajRaj

651 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges

1

Nếu bạn chỉ cần kiểm soát độ chính xác trong định dạng

pi = 3.14159265
format(pi, '.3f') #print 3.142 # 3 precision after the decimal point
format(pi, '.1f') #print 3.1
format(pi, '.10f') #print 3.1415926500, more precision than the original

Nếu bạn cần kiểm soát độ chính xác trong số học điểm nổi

import decimal
decimal.getcontext().prec=4 #4 precision in total
pi = decimal.Decimal(3.14159265)
pi**2 #print Decimal('9.870') whereas '3.142 squared' would be off

--edit--

Mà không có "làm tròn", do đó cắt ngắn số

x = 1.67
y = 1.6
z = 1
0

Đã trả lời ngày 25 tháng 3 năm 2015 lúc 3:01Mar 25, 2015 at 3:01

WakkadojowakkadojoSYK

4113 Huy hiệu bạc7 Huy hiệu đồng6 silver badges17 bronze badges

4

Các số nguyên nhanh hơn để thao tác so với phao/đôi nhanh hơn dây. Trong trường hợp này, tôi đã cố gắng có được thời gian với cả hai cách tiếp cận:

x = 1.67
y = 1.6
z = 1
1

vì :Jun 14 at 4:09

Vì vậy, an toàn khi sử dụng toán học.gtlee

Đã trả lời ngày 6 tháng 2 năm 2020 lúc 21:151 silver badge3 bronze badges

Rajraj

x = 1.67
y = 1.6
z = 1
2

651 Huy hiệu bạc7 Huy hiệu đồngJun 16 at 12:20

Hướng dẫn how do you drop decimal places without rounding in python? - làm thế nào để bạn giảm số thập phân mà không làm tròn trong python?

1

Nếu bạn chỉ cần kiểm soát độ chính xác trong định dạng

Nếu bạn cần kiểm soát độ chính xác trong số học điểm nổi

Mà không có "làm tròn", do đó cắt ngắn sốJun 28 at 9:46

1

Làm thế nào để bạn thoát khỏi số thập phân mà không làm tròn trong Python?

Sử dụng hàm INT để cắt một phao trong python hàm int () tích hợp có một phao và chuyển đổi nó thành một số nguyên, do đó cắt giảm giá trị float bằng cách loại bỏ các vị trí thập phân của nó. The built-in int() function takes a float and converts it to an integer, thereby truncating a float value by removing its decimal places.

Làm thế nào để tôi giảm các vị trí thập phân trong Python?

Ví dụ 1: Mã python để chứng minh ceil (), trunc () và sàn ()..
Trunc (): Hàm này được sử dụng để loại bỏ tất cả các phần thập phân của số điểm nổi và trả về số nguyên mà không có phần thập phân ..
CLE (): Hàm này được sử dụng để in số nguyên nhỏ nhất lớn hơn số đã cho ..

Làm thế nào để bạn in lên hai vị trí thập phân trong Python mà không làm tròn?

Trừ 0,005 và sau đó tròn.Ví dụ: nếu bạn chỉ muốn in số bạn có thể sử dụng định dạng %F6.2 và giá trị X-0.005.Lưu câu trả lời này.. For example if you just want to print the number you can use a format of %f6. 2 and the value x-0.005 . Save this answer.