Tôi có một chuỗi ở định dạng: 'nn.nnnnn' trong Python và tôi muốn chuyển đổi nó thành một số nguyên.
Chuyển đổi trực tiếp thất bại:
>>> s = '23.45678'
>>> i = int[s]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: '23.45678'
Tôi có thể chuyển đổi nó thành một số thập phân bằng cách sử dụng:
>>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
Tôi cũng có thể chia thành '.', Sau đó trừ số thập phân từ 0, sau đó thêm nó vào toàn bộ số ... yuck.
Nhưng tôi thích có nó như một INT, mà không cần chuyển đổi loại không cần thiết hoặc điều động.
hỏi ngày 7 tháng 7 năm 2009 lúc 20:35Jul 7, 2009 at 20:35
Matt Hampelmatt HampelMatt Hampel
4.92111 Huy hiệu vàng48 Huy hiệu bạc78 Huy hiệu đồng11 gold badges48 silver badges78 bronze badges
1
Còn cái này thì sao?
>>> s = '23.45678'
>>> int[float[s]]
23
Or...
>>> int[Decimal[s]]
23
Or...
>>> int[s.split['.'][0]]
23
Tôi nghi ngờ nó sẽ trở nên đơn giản hơn thế nhiều, tôi sợ. Chỉ cần chấp nhận nó và tiếp tục.
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:36Jul 7, 2009 at 20:36
Paolo Bergantinopaolo BergantinoPaolo Bergantino
473K79 Huy hiệu vàng518 Huy hiệu bạc436 Huy hiệu Đồng79 gold badges518 silver badges436 bronze badges
2
Bạn muốn loại hành vi làm tròn nào? Bạn có 2.67 để biến thành 3 hay 2. Nếu bạn muốn sử dụng làm tròn, hãy thử điều này:
s = '234.67'
i = int[round[float[s]]]
Nếu không, chỉ cần làm:
s = '234.67'
i = int[float[s]]
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:41Jul 7, 2009 at 20:41
>>> s = '23.45678'
>>> int[float[s]]
23
>>> int[round[float[s]]]
23
>>> s = '23.54678'
>>> int[float[s]]
23
>>> int[round[float[s]]]
24
Bạn không chỉ định nếu bạn muốn làm tròn hay không ...
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:47Jul 7, 2009 at 20:47
Kevin Littlekevin LittleKevin Little
12.2k5 Huy hiệu vàng38 Huy hiệu bạc47 Huy hiệu đồng5 gold badges38 silver badges47 bronze badges
Bạn đã có thể sử dụng:
s = '23.245678'
i = int[float[s]]
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:40Jul 7, 2009 at 20:40
GBCGBCgbc
8.3056 Huy hiệu vàng34 Huy hiệu bạc 30 Huy hiệu Đồng6 gold badges34 silver badges30 bronze badges
"Chuyển đổi" chỉ có ý nghĩa khi bạn thay đổi từ kiểu dữ liệu này sang loại dữ liệu khác mà không mất độ trung thực. Số được biểu thị bằng chuỗi là một chiếc phao và sẽ mất độ chính xác khi bị buộc vào INT.
Thay vào đó, bạn muốn làm tròn, có lẽ [tôi hy vọng rằng các con số không đại diện cho tiền tệ vì sau đó làm tròn trở nên phức tạp hơn rất nhiều].
round[float['23.45678']]
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:45Jul 7, 2009 at 20:45
JosefassadjosefassadJosefAssad
3.90427 Huy hiệu bạc37 Huy hiệu đồng27 silver badges37 bronze badges
Biểu thức
>>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
2 được đề cập bởi người khác là tốt nhất nếu bạn muốn cắt giảm giá trị. Nếu bạn muốn làm tròn, sử dụng >>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
3 nếu thuật toán tròn phù hợp với những gì bạn muốn [xem tài liệu tròn], nếu không bạn nên sử dụng >>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
4 và một nếu thuật toán làm tròn của nó.Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:48Jul 7, 2009 at 20:48
Kathy Van Stonekathy Van StoneKathy Van Stone
25K3 Huy hiệu vàng31 Huy hiệu bạc40 Huy hiệu đồng3 gold badges31 silver badges40 bronze badges
>>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
0sẽ cung cấp cho bạn một giá trị số nguyên, nhưng một loại float. Tuy nhiên, với việc gõ vịt của Python, loại thực tế thường không liên quan lắm. Điều này cũng sẽ làm tròn giá trị mà bạn có thể không muốn. Thay thế 'vòng' bằng 'int' và bạn sẽ có nó bị cắt và một int thực tế. Như thế này:
>>> from decimal import *
>>> d = Decimal[s]
>>> print d
23.45678
1Nhưng, một lần nữa, 'loại' thực tế thường không quan trọng.
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:47Jul 7, 2009 at 20:47
Kevin Littlekevin Littlerledley
12.2k5 Huy hiệu vàng38 Huy hiệu bạc47 Huy hiệu đồng1 gold badge12 silver badges7 bronze badges
Bạn đã có thể sử dụng:
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:40
GBCGBC
8.3056 Huy hiệu vàng34 Huy hiệu bạc 30 Huy hiệu Đồng
"Chuyển đổi" chỉ có ý nghĩa khi bạn thay đổi từ kiểu dữ liệu này sang loại dữ liệu khác mà không mất độ trung thực. Số được biểu thị bằng chuỗi là một chiếc phao và sẽ mất độ chính xác khi bị buộc vào INT.
Thay vào đó, bạn muốn làm tròn, có lẽ [tôi hy vọng rằng các con số không đại diện cho tiền tệ vì sau đó làm tròn trở nên phức tạp hơn rất nhiều].
Đã trả lời ngày 7 tháng 7 năm 2009 lúc 20:45Nov 7, 2021 at 17:46