Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

Tôi đang tìm cách chuyển đổi số sang định dạng chuỗi, bỏ bất kỳ dự phòng '.0'

Dữ liệu đầu vào là sự pha trộn của phao và chuỗi. Kết quả mong muốn:

0 -> '0'

0,0 -> '0'

0,1 -> '0,1'

1.0 -> '1'

Tôi đã đưa ra biểu thức máy phát sau, nhưng tôi tự hỏi liệu có cách nào nhanh hơn không:

(str(i).rstrip('.0') if i else '0' for i in lst)

Kiểm tra sự thật là có để ngăn 0 trở thành một chuỗi trống.

Chỉnh sửa: Giải pháp ít nhiều có thể chấp nhận mà tôi có bây giờ là:

('%d'%i if i == int(i) else '%s'%i for i in lst)

Có vẻ kỳ lạ là không có cách nào thanh lịch để xử lý trường hợp này (khá đơn giản) trong Python.

Hỏi ngày 22 tháng 12 năm 2008 lúc 1:33Dec 22, 2008 at 1:33

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

AlgoriasalgoriasAlgorias

2.9855 Huy hiệu vàng21 Huy hiệu bạc16 Huy hiệu đồng5 gold badges21 silver badges16 bronze badges

4

Xem PEP 3101:

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.

Phong cách cũ (không ưa thích):

>>> "%g" % float(10)
'10'

Phong cách mới:

>>> '{0:g}'.format(float(21))
'21'

Phong cách mới 3.6+:

>>> f'{float(21):g}'
'21'

Đã trả lời ngày 22 tháng 8 năm 2012 lúc 19:23Aug 22, 2012 at 19:23

Ebasebasebas

9106 Huy hiệu bạc5 Huy hiệu Đồng6 silver badges5 bronze badges

3

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
4 không làm những gì bạn muốn nó làm, nó sẽ loại bỏ bất kỳ nhân vật nào bạn đưa ra và không phải là hậu tố:

>>> '30000.0'.rstrip('.0')
'3'

Trên thực tế, chỉ

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
5 sẽ làm những gì bạn muốn. Chỉnh sửa: Như Robert đã chỉ ra trong nhận xét của mình, điều này sẽ không hoạt động với số lượng lớn vì nó sử dụng độ chính xác mặc định là %g là 6 chữ số quan trọng.

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
6 sử dụng 12 chữ số quan trọng, tôi nghĩ rằng điều này sẽ hoạt động:

>>> numbers = [ 0.0, 1.0, 0.1, 123456.7 ]
>>> ['%.12g' % n for n in numbers]
['1', '0', '0.1', '123456.7']

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 2:18Dec 22, 2008 at 2:18

dF.dF.dF.

72.5K29 Huy hiệu vàng128 Huy hiệu bạc135 Huy hiệu đồng29 gold badges128 silver badges135 bronze badges

4

>>> x = '1.0'
>>> int(float(x))
1
>>> x = 1
>>> int(float(x))
1

Đã trả lời ngày 30 tháng 12 năm 2008 lúc 10:16Dec 30, 2008 at 10:16

1

Rất nhiều sự xấu xí ngoài kia…

Yêu thích cá nhân của tôi là chuyển đổi

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
7s không yêu cầu là
'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
7 (= khi chúng thực sự là số nguyên) thành
'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
9, do đó loại bỏ, bây giờ vô dụng, theo sau
>>> "%g" % float(10)
'10'
0

>>> "%g" % float(10)
'10'
1

Sau đó, bạn có thể in chúng bình thường.

Đã trả lời ngày 22 tháng 8 năm 2013 lúc 14:34Aug 22, 2013 at 14:34

Jeromejjeromejjeromej

9.4022 Huy hiệu vàng42 Huy hiệu bạc62 Huy hiệu Đồng2 gold badges42 silver badges62 bronze badges

(str(i)[-2:] == '.0' and str(i)[:-2] or str(i) for i in ...)

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 2:25Dec 22, 2008 at 2:25

Mike Samuelmike SamuelMike Samuel

Huy hiệu vàng 116K3030 gold badges212 silver badges240 bronze badges

('%d'%i if i == int(i) else '%s'%i for i in lst)
0

Tuy nhiên, hãy lưu ý rằng Python đại diện cho 0,1 như một chiếc phao không chính xác, trên hệ thống của tôi 0.10000000000000001.

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 1:56Dec 22, 2008 at 1:56

J.T. Hurleyj.T. HurleyJ.T. Hurley

5419 Huy hiệu bạc12 Huy hiệu đồng9 silver badges12 bronze badges

1

Để in

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
7 có giá trị số nguyên là
'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
9:

('%d'%i if i == int(i) else '%s'%i for i in lst)
1

Thí dụ

('%d'%i if i == int(i) else '%s'%i for i in lst)
2

Đã trả lời ngày 6 tháng 6 năm 2013 lúc 3:24Jun 6, 2013 at 3:24

JFSJFSjfs

384K183 Huy hiệu vàng949 Huy hiệu bạc1622 Huy hiệu Đồng183 gold badges949 silver badges1622 bronze badges

Nếu bạn chỉ quan tâm đến khoảng 1 thập phân của độ chính xác (như trong các ví dụ của bạn), bạn chỉ có thể làm:

('%d'%i if i == int(i) else '%s'%i for i in lst)
3

Điều này sẽ chuyển đổi số thành một chuỗi với 1 thập phân và sau đó xóa nó nếu nó là số 0:

('%d'%i if i == int(i) else '%s'%i for i in lst)
4

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 3:37Dec 22, 2008 at 3:37

Robert Gamblerobert GambleRobert Gamble

104K24 Huy hiệu vàng145 Huy hiệu bạc137 Huy hiệu đồng24 gold badges145 silver badges137 bronze badges

0

('%d'%i if i == int(i) else '%s'%i for i in lst)
5

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 1:59Dec 22, 2008 at 1:59

Andy Humeandy HumeAndy Hume

39,4K10 Huy hiệu vàng45 Huy hiệu bạc55 Huy hiệu Đồng10 gold badges45 silver badges55 bronze badges

1

Sử dụng định dạng chuỗi của Python (sử dụng str.format () với Python 3.0):

('%d'%i if i == int(i) else '%s'%i for i in lst)
6

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 1:53Dec 22, 2008 at 1:53

Daniel Naabdaniel NaabDaniel Naab

22.4K8 Huy hiệu vàng54 Huy hiệu bạc54 Huy hiệu đồng8 gold badges54 silver badges54 bronze badges

2

Mã sau đây sẽ chuyển đổi nội dung của biến số không như nó là

>>> "%g" % float(10)
'10'
4. Nếu bạn sử dụng
>>> "%g" % float(10)
'10'
5, đầu ra sẽ là
>>> "%g" % float(10)
'10'
6

('%d'%i if i == int(i) else '%s'%i for i in lst)
7

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

Ovidiu Dolha

5.1061 Huy hiệu vàng21 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge21 silver badges30 bronze badges

Đã trả lời ngày 27 tháng 6 năm 2017 lúc 12:23Jun 27, 2017 at 12:23

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

('%d'%i if i == int(i) else '%s'%i for i in lst)
8

Đã trả lời ngày 24 tháng 10 năm 2009 lúc 3:23Oct 24, 2009 at 3:23

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

('%d'%i if i == int(i) else '%s'%i for i in lst)
9

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 2:21Dec 22, 2008 at 2:21

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

A. Coadya. CoadyA. Coady

51.7K8 Huy hiệu vàng32 Huy hiệu bạc39 Huy hiệu đồng8 gold badges32 silver badges39 bronze badges

2

Fwiw, với jinja2 trong đó var = 10.3

>>> "%g" % float(10)
'10'
7 sẽ phát ra số nguyên
>>> "%g" % float(10)
'10'
8

>>> "%g" % float(10)
'10'
9 và
>>> '{0:g}'.format(float(21))
'21'
0 cũng có sẵn.

Vì vậy, đó là var2 = 10,9

>>> '{0:g}'.format(float(21))
'21'
1 vẫn sẽ phát ra số nguyên
>>> "%g" % float(10)
'10'
8

Độ chính xác cũng có thể được kiểm soát bằng cách sử dụng đối số từ khóa

>>> '{0:g}'.format(float(21))
'21'
3 của hàm
>>> '{0:g}'.format(float(21))
'21'
4.

Tham khảo: http://jinja.pocoo.org/docs/dev/templates/#round

Đã trả lời ngày 5 tháng 11 năm 2016 lúc 16:43Nov 5, 2016 at 16:43

Niklauzgniklauzgniklauzg

5514 Huy hiệu bạc6 Huy hiệu Đồng4 silver badges6 bronze badges

Tôi đã xử lý một giá trị từ một từ điển JSON (được trả về bởi một API). Tất cả những điều trên đã không giúp tôi nên tôi được xây dựng bởi chức năng trợ giúp riêng. Nó cắt ngắn tất cả các số không theo dõi.

Tôi hy vọng nó sẽ giúp ai đó ngoài kia

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
0

Bản in:

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
1

Đã trả lời ngày 7 tháng 7 năm 2017 lúc 2:10Jul 7, 2017 at 2:10

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

EdisonedisonEdison

7901 Huy hiệu vàng11 Huy hiệu bạc26 Huy hiệu đồng1 gold badge11 silver badges26 bronze badges

Tôi đã làm điều này để loại bỏ các chữ số không đáng kể vượt qua một độ chính xác nhất định.

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
2

Đã trả lời ngày 27 tháng 3 lúc 13:08Mar 27 at 13:08

p0licatp0licatp0licat

451 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges

1

Chúng tôi 0 prcision và thêm một khoảng thời gian nếu bạn muốn. Ví dụ "%.0f."

'g' - General format. This prints the number as a fixed-point
      number, unless the number is too large, in which case
      it switches to 'e' exponent notation.
3

Đã trả lời ngày 22 tháng 12 năm 2008 lúc 2:23Dec 22, 2008 at 2:23

Hướng dẫn python int to string no decimal - python int thành chuỗi không có số thập phân

Charlie Martincharlie MartinCharlie Martin

108K23 Huy hiệu vàng192 Huy hiệu bạc258 Huy hiệu đồng23 gold badges192 silver badges258 bronze badges

1

Làm thế nào để bạn int mà không có số thập phân trong Python?

Sử dụng lớp int () để có được một số mà không có vị trí thập phân, ví dụ: Kết quả = int (my_float). Lớp Int () cắt các số điểm nổi về 0, do đó, nó sẽ trả về một int đại diện cho số mà không có vị trí thập phân., e.g. result = int(my_float) . The int() class truncates floating-point numbers towards zero, so it will return an int that represents the number without the decimal places.

Việc sử dụng .2f trong Python là gì?

Đúng như dự đoán, số điểm nổi (1.9876) đã được làm tròn lên đến hai vị trí thập phân - 1,99.Vì thế %.2F có nghĩa là làm tròn đến hai vị trí thập phân.Bạn có thể chơi xung quanh với mã để xem điều gì xảy ra khi bạn thay đổi số trong định dạng.to round up to two decimal places. You can play around with the code to see what happens as you change the number in the formatter.

Làm thế nào để bạn không hiển thị số thập phân trong Python?

Python có hai cách loại bỏ tất cả các chữ số thập phân khỏi một số:..
Toán học.hàm trunc () cắt giảm giá trị của đối số của nó thành một số toàn bộ ..
Hàm int () chuyển đổi một số hoặc chuỗi thành một số nguyên.Trong quá trình đó, Python vứt bỏ phần thập phân của giá trị ..

Làm thế nào để bạn in một giá trị mà không có số thập phân trong Python?

Ở đây chúng tôi phải làm việc trên các số float, vì vậy hãy liệt kê các phương pháp khác nhau để loại bỏ số thập phân khỏi các số ...
A = 24 ..
print(type(a)).
B = 19.4 ..
print(type(b)).
c = 3+4j ..
print(type(c)).