Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

Làm cách nào tôi có thể hiển thị

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
1 dưới dạng
def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
2?

Show

Tôi đã thử điều này:

>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'

Nhưng nó có thêm 0.

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

Hỏi ngày 2 tháng 8 năm 2011 lúc 14:16Aug 2, 2011 at 14:16

2

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'

Trong '40800000000.00000000000000' của bạn, có nhiều số không quan trọng hơn có ý nghĩa giống như bất kỳ chữ số nào khác. Đó là lý do tại sao bạn phải nói rõ nơi bạn muốn dừng lại.

Nếu bạn muốn tự động xóa tất cả các số không theo dõi, bạn có thể thử:

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

ABM

1.5782 Huy hiệu vàng25 Huy hiệu bạc41 Huy hiệu đồng2 gold badges25 silver badges41 bronze badges

Đã trả lời ngày 2 tháng 8 năm 2011 lúc 14:19Aug 2, 2011 at 14:19

Eumiroeumiroeumiro

200K34 Huy hiệu vàng296 Huy hiệu bạc259 Huy hiệu Đồng34 gold badges296 silver badges259 bronze badges

2

Đây là một ví dụ sử dụng hàm

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
3:

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'

Thay vì định dạng, bạn cũng có thể sử dụng F-Strings:

>>> f"{Decimal('40800000000.00000000000000'):.2E}"
'4.08E+10'
  • Tài liệu chính thức

  • Định dạng ban đầu () đề xuất

Đã trả lời ngày 8 tháng 11 năm 2013 lúc 16:44Nov 8, 2013 at 16:44

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

Cees Timmerancees TimmermanCees Timmerman

16.3k10 Huy hiệu vàng89 Huy hiệu bạc120 Huy hiệu đồng10 gold badges89 silver badges120 bronze badges

1

Cho số của bạn

x = Decimal('40800000000.00000000000000')

Bắt đầu từ Python 3,

'{:.2e}'.format(x)

là cách được đề xuất để làm điều đó.

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
4 có nghĩa là bạn muốn ký hiệu khoa học và
def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
5 có nghĩa là bạn muốn 2 chữ số sau dấu chấm. Vì vậy, bạn sẽ nhận được
def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
6

Đã trả lời ngày 12 tháng 3 năm 2017 lúc 15:47Mar 12, 2017 at 15:47

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

patapouf_aipatapouf_aipatapouf_ai

16.6K13 Huy hiệu vàng88 Huy hiệu bạc126 Huy hiệu đồng13 gold badges88 silver badges126 bronze badges

5

Không ai đề cập đến dạng ngắn của phương pháp

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
7:

Nhu cầu ít nhất Python 3.6

f"{Decimal('40800000000.00000000000000'):.2E}"

(Tôi tin rằng nó giống như Cees Timmerman, chỉ ngắn hơn một chút)

Đã trả lời ngày 26 tháng 2 năm 2018 lúc 10:38Feb 26, 2018 at 10:38

3

Đây là một danh sách hợp nhất các câu trả lời và bình luận "đơn giản".

Python 3

from decimal import Decimal

x = '40800000000.00000000000000'
# Converted to Float
x = Decimal(x)

# ===================================== # `Dot Format`
print("{0:.2E}".format(x))
# ===================================== # `%` Format
print("%.2E" % x)
# ===================================== # `f` Format
print(f"{x:.2E}")
# =====================================
# ALL Return: 4.08E+10
print((f"{x:.2E}") == ("%.2E" % x) == ("{0:.2E}".format(x)))
# True
print(type(f"{x:.2E}") == type("%.2E" % x) == type("{0:.2E}".format(x)))
# True
# =====================================

Hoặc không có ________ 28

# NO IMPORT NEEDED FOR BASIC FLOATS
y = '40800000000.00000000000000'
y = float(y)

# ===================================== # `Dot Format`
print("{0:.2E}".format(y))
# ===================================== # `%` Format
print("%.2E" % y)
# ===================================== # `f` Format
print(f"{y:.2E}")
# =====================================
# ALL Return: 4.08E+10
print((f"{y:.2E}") == ("%.2E" % y) == ("{0:.2E}".format(y)))
# True
print(type(f"{y:.2E}") == type("%.2E" % y) == type("{0:.2E}".format(y)))
# True
# =====================================

So sánh

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
0

Vì vậy, đối với Python 3, bạn có thể chuyển đổi giữa bất kỳ ai trong ba người bây giờ.

Yêu thích của tôi:

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
1

Đã trả lời ngày 27 tháng 10 năm 2019 lúc 4:29Oct 27, 2019 at 4:29

JayrizzojayrizzoJayRizzo

2.8223 huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng3 gold badges31 silver badges42 bronze badges

2

Xem các bảng từ định dạng chuỗi Python để chọn bố cục định dạng thích hợp. Trong trường hợp của bạn là

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
9.

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

Mihai Maruseacihai MaruseacMihai Maruseac

20,5K7 Huy hiệu vàng55 Huy hiệu bạc109 Huy hiệu đồng7 gold badges55 silver badges109 bronze badges

Điều này làm việc tốt nhất cho tôi:

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
2

Đã trả lời ngày 12 tháng 5 năm 2016 lúc 8:09May 12, 2016 at 8:09

Matthew Fitchmatthew FitchMatthew Fitch

2451 Huy hiệu vàng11 Huy hiệu bạc13 Huy hiệu đồng1 gold badge11 silver badges13 bronze badges

Số thập phân của tôi quá lớn đối với

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
0 vì vậy tôi đã phải cải thiện:

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
3

Đây là một ví dụ sử dụng:

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
4

Đã trả lời ngày 6 tháng 1 năm 2013 lúc 22:06Jan 6, 2013 at 22:06

Ubershmekelubershmekelubershmekel

11.1k7 Huy hiệu vàng69 Huy hiệu bạc84 Huy hiệu đồng7 gold badges69 silver badges84 bronze badges

1

Để chuyển đổi một số thập phân thành ký hiệu khoa học mà không cần chỉ định độ chính xác trong chuỗi định dạng và không bao gồm các số không kéo dài, tôi hiện đang sử dụng

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
5

Để giữ bất kỳ số không kéo dài nào, chỉ cần loại bỏ

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
1.

Đã trả lời ngày 26 tháng 2 năm 2014 lúc 11:37Feb 26, 2014 at 11:37

MikemmikemMikeM

12.7k2 Huy hiệu vàng32 Huy hiệu bạc47 Huy hiệu đồng2 gold badges32 silver badges47 bronze badges

Tôi thích Python 3.x Way.

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
6

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
2 chỉ ra có bao nhiêu chữ số được hiển thị trong phần nổi.

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
7

Đã trả lời ngày 11 tháng 9 năm 2019 lúc 3:33Sep 11, 2019 at 3:33

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

Thêm câu trả lời cập nhật để chỉ ra cách áp dụng

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
3 vào số nhỏ

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
8

Đã trả lời ngày 14 tháng 10 năm 2021 lúc 10:41Oct 14, 2021 at 10:41

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

Beppe cbeppe cBeppe C

9.0732 Huy hiệu vàng15 Huy hiệu bạc36 Huy hiệu đồng2 gold badges15 silver badges36 bronze badges

Đây là cái đơn giản nhất tôi có thể tìm thấy.

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
9

('E' không nhạy cảm với trường hợp. Bạn cũng có thể sử dụng '.2E')

Đã trả lời ngày 5 tháng 4 năm 2020 lúc 22:05Apr 5, 2020 at 22:05

Hướng dẫn python format number as scientific notation - số định dạng python dưới dạng ký hiệu khoa học

def format_e(n):
    a = '%E' % n
    return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
0

Đã trả lời ngày 12 tháng 1 năm 2015 lúc 10:19Jan 12, 2015 at 10:19