Hướng dẫn python convert int to string without scientific notation - python chuyển đổi int thành chuỗi mà không cần ký hiệu khoa học

Tôi muốn in một số số điểm nổi để chúng luôn được viết ở dạng thập phân (ví dụ:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
6 hoặc
>>> format(0.00000005, '.20f')
'0.00000005000000000000'
7, không phải trong ký hiệu khoa học, nhưng tôi muốn kết quả là có số liệu quan trọng lên tới ~ 15.7 của IEEE 754 gấp đôi, và không còn nữa.

Những gì tôi muốn là lý tưởng để kết quả là chuỗi ngắn nhất ở định dạng thập phân vị trí vẫn dẫn đến cùng một giá trị khi được chuyển đổi thành

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
8.ideally so that the result is the shortest string in positional decimal format that still results in the same value when converted to a
>>> format(0.00000005, '.20f')
'0.00000005000000000000'
8
.

Người ta biết rằng

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
9 của
>>> format(0.00000005, '.20f')
'0.00000005000000000000'
8 được viết bằng ký hiệu khoa học nếu số mũ lớn hơn 15, hoặc nhỏ hơn -4:

>>> n = 0.000000054321654321
>>> n
5.4321654321e-08  # scientific notation

Nếu

>>> format(0.1, '.20f')
'0.10000000000000000555'
1 được sử dụng, chuỗi kết quả một lần nữa nằm trong ký hiệu khoa học:

>>> str(n)
'5.4321654321e-08'

Nó đã được đề xuất rằng tôi có thể sử dụng

>>> format(0.1, '.20f')
'0.10000000000000000555'
2 với cờ
>>> format(0.1, '.20f')
'0.10000000000000000555'
3 và độ chính xác đủ để thoát khỏi ký hiệu khoa học:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'

Nó hoạt động cho con số đó, mặc dù nó có thêm một số số 0. Nhưng sau đó, định dạng tương tự không thành công đối với

>>> format(0.1, '.20f')
'0.10000000000000000555'
4, đưa ra các chữ số thập phân vượt quá độ chính xác của máy thực tế của phao:

>>> format(0.1, '.20f')
'0.10000000000000000555'

Và nếu số của tôi là

>>> format(0.1, '.20f')
'0.10000000000000000555'
5, sử dụng
>>> format(0.1, '.20f')
'0.10000000000000000555'
6 vẫn sẽ mất độ chính xác tương đối:

>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'

Do đó, những cách tiếp cận này không phù hợp với yêu cầu của tôi.these approaches do not match my requirements.


Điều này dẫn đến câu hỏi: cách dễ nhất và cũng có hiệu suất tốt nhất để in số điểm nổi tùy ý ở định dạng thập phân, có cùng các chữ số như trong

>>> format(0.1, '.20f')
'0.10000000000000000555'
7 (hoặc
>>> format(0.1, '.20f')
'0.10000000000000000555'
8 trên Python 3), nhưng luôn sử dụng định dạng thập phân chứ không phải ký hiệu khoa học.

Nghĩa là, một hàm hoặc hoạt động ví dụ như chuyển đổi giá trị float

>>> format(0.1, '.20f')
'0.10000000000000000555'
9 thành chuỗi
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
0;
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
1 đến
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
2;
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
3 đến
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
4 hoặc
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
5 và định dạng giá trị phao
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
6 là
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
7.


Sau giai đoạn tiền thưởng: Dường như có ít nhất 2 cách tiếp cận khả thi, như Karin đã chứng minh rằng sử dụng thao tác chuỗi, người ta có thể đạt được sự tăng tốc độ đáng kể so với thuật toán ban đầu của tôi trên Python 2.

Thus,

  • Nếu hiệu suất là quan trọng và cần có khả năng tương thích Python 2; Hoặc nếu mô -đun
    >>> format(4.5678e-20, '.20f')
    '0.00000000000000000005'
    
    8 không thể được sử dụng vì một số lý do, thì cách tiếp cận của Karin bằng cách sử dụng thao tác chuỗi là cách để thực hiện.
  • Trên Python 3, mã hơi ngắn hơn của tôi cũng sẽ nhanh hơn.

Vì tôi chủ yếu phát triển trên Python 3, tôi sẽ chấp nhận câu trả lời của riêng mình và sẽ trao cho Karin the Bounty.

Hướng dẫn python convert int to string without scientific notation - python chuyển đổi int thành chuỗi mà không cần ký hiệu khoa học
Một cái nhìn nhanh về các giải pháp để theo dõi

[toc]

Tóm tắt: Sử dụng cú pháp theo nghĩa đen

>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
9 để đàn áp ký hiệu khoa học của một số vào biểu diễn dấu phẩy động của nó.Use the string literal syntax
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
9 to suppress the scientific notation of a number to its floating-point representation.

Công thức vấn đề: Làm thế nào bạn sẽ đàn áp một số được biểu thị trong ký hiệu khoa học theo mặc định với giá trị dấu phẩy động? How will you suppress a number represented in scientific notation by default to a floating-point value?

Lưu ý: Nói chung, Python đại diện cho các số điểm nổi khổng lồ hoặc số điểm nổi rất nhỏ ở dạng khoa học của chúng. Ký hiệu khoa học của một số đại diện cho số lượng về sức mạnh của 10. Ví dụ, ký hiệu khoa học cho số

number = 2.5 / 1000000
print(number)
0 là
number = 2.5 / 1000000
print(number)
1.
Generally, Python represents huge floating-point numbers or very small floating-point numbers in their scientific form. Scientific notation of a number represents the number in terms of powers of 10. For example, the scientific notation for the number
number = 2.5 / 1000000
print(number)
0 is
number = 2.5 / 1000000
print(number)
1.

Ví dụ: Xem xét đoạn mã sau.Consider the following code snippet.

number = 2.5 / 1000000
print(number)

Đầu ra là

number = 2.5 / 1000000
print(number)
2. Làm thế nào bạn sẽ đàn áp ký hiệu khoa học và hiển thị đầu ra là
number = 2.5 / 1000000
print(number)
3?

Hướng dẫn. VideoVideo Walkthrough

Cách đàn áp ký hiệu khoa học trong Python

Giải pháp 1: Sử dụng chuỗi chữ (F-String)

✨APPROACH: Nếu bạn đang sử dụng Python 3.6 trở lên, thì giải pháp đơn giản nhất cho vấn đề của chúng tôi là sử dụng cú pháp theo nghĩa đen của chuỗi

>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
9 để biểu thị số điểm nổi đã cho ở định dạng thập phân của nó với các vị trí của các điểm thập phân.Approach: If you are using Python 3.6 or above, then the simplest solution to our problem is to use the string literal syntax
>>> format(4.5678e-20, '.20f')
'0.00000000000000000005'
9 to represent the given floating-point number in its decimal format with
number = 2.5 / 1000000
print(number)
5 places of decimal points.

Code:

number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")

Output:

Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025

Trivia: Kỹ thuật theo nghĩa đen của chuỗi dựa trên

number = 2.5 / 1000000
print(number)
6 ngầm.The string literal technique relies upon
number = 2.5 / 1000000
print(number)
6 implicitly.

Giải pháp 2: Sử dụng str.format ()

________ 57 & nbsp; là một hàm tích hợp trong Python trả về một chuỗi được định dạng. Nó định dạng các giá trị cụ thể và chèn chúng trong trình giữ chỗ của chuỗi.

✨APPROACH: Để thể hiện ký hiệu khoa học về đầu ra ở định dạng thập phân với

number = 2.5 / 1000000
print(number)
5 vị trí theo điểm thập phân, hãy sử dụng
number = 2.5 / 1000000
print(number)
9 trong đó
>>> format(0.1, '.20f')
'0.10000000000000000555'
1 là ____ ____61.Approach: To represent the scientific notation of the output in decimal format with
number = 2.5 / 1000000
print(number)
5 places following the decimal point, use
number = 2.5 / 1000000
print(number)
9 where
>>> format(0.1, '.20f')
'0.10000000000000000555'
1 is “
number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
1” .

Code:

number = 2.5 / 1000000
print("Scientific Notation: ", number)
print("Decimal Representation: {:.7f}".format(number))

Output:

Scientific Notation:  2.5e-06
Decimal Representation: 0.0000025

Lưu ý: Đảm bảo rằng bạn quản lý giá trị của

number = 2.5 / 1000000
print(number)
5, nghĩa là số sau các điểm thập phân bạn muốn hiển thị đúng, tùy thuộc vào số lượng điểm nổi nhỏ. Ví dụ: hãy xem ví dụ sau:Ensure that you manage the value of
number = 2.5 / 1000000
print(number)
5, that is, the number after the decimal points you want to display properly, depending on how small the floating-point number is. For example, have a look at the following example:

>>> str(n)
'5.4321654321e-08'
0

Vì số chữ số mặc định sau điểm thập phân là 6, đầu ra của đoạn trích trên sẽ là

number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
3. Điều này không hữu ích cho ví dụ đã cho. Do đó, chúng ta có thể sử dụng một cái gì đó trông như thế này:

>>> str(n)
'5.4321654321e-08'
1

Hướng dẫn được đề xuất & nbsp; để hiểu cách thức định dạng chuỗi hoạt động trong Python: to understand how string formatting works in Python:

  • Định dạng chuỗi: Giữ cho nó đơn giản
  • Định dạng chuỗi So sánh: Định dạng () | Phần trăm | F-String

Giải pháp 3: Sử dụng định dạng %

Toán tử % cho phép bạn định dạng một đối tượng chuỗi trong Python. Các nhà xác định chuyển đổi, như & nbsp; ________ 64 & nbsp; và ________ 65, & nbsp; được sử dụng trong chuỗi định dạng làm người giữ chỗ. Các nhà xác định này chỉ ra mức độ % sẽ định dạng các giá trị.

✨APPROACH: Nếu bạn đang sử dụng phiên bản Python cũ hơn, hãy sử dụng

number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
6 để đàn áp ký hiệu khoa học thành giá trị dấu phẩy động lên đến các vị trí thập phân ____55. Hãy nhớ quản lý độ chính xác bằng tay.Approach: If you are using an older version of Python, use
number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
6 to suppress the scientific notation to a floating-point value upto
number = 2.5 / 1000000
print(number)
5 decimal places. Remember to manage the precision manually.

Code:

>>> str(n)
'5.4321654321e-08'
2

Output::

Scientific Notation:  2.5e-06
Decimal Representation: 0.0000025

Giải pháp 4: Sử dụng gấu trúc

✨approach: Một tùy chọn khác, nếu bạn đang sử dụng gấu trúc và muốn triệt tiêu ký hiệu khoa học cho tất cả các phao, là điều chỉnh các tùy chọn gấu trúc như hình dưới đây.Approach: Another option, if you are using pandas and would like to suppress scientific notation for all floats, is to adjust Pandas options as shown below.

Code:

>>> str(n)
'5.4321654321e-08'
4

Output:

>>> str(n)
'5.4321654321e-08'
5

Học gấu con cách thú vị bằng cách giải các câu đố mã

  • Nếu bạn muốn tăng kỹ năng gấu trúc của mình, hãy xem xét kiểm tra cuốn sách học tập dựa trên câu đố của tôi Coffee Break Pandas (Amazon Link).

Hướng dẫn python convert int to string without scientific notation - python chuyển đổi int thành chuỗi mà không cần ký hiệu khoa học

Giải pháp 5: Sử dụng Numpy

Trong các cách tiếp cận trên, chúng tôi phải chỉ định độ chính xác bằng tay. Nhưng, nếu bạn không có ý tưởng về độ chính xác thì sao? Đây là nơi thư viện

number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
8 sẽ giúp bạn.

✨APPROACH: ________ 69 & nbsp; là một chức năng & nbsp; của thư viện Numpy trong Python định dạng một vô hướng điểm nổi. Sau đó, nó trả về biểu diễn chuỗi thập phân của giá trị dấu phẩy động được thông qua.Approach:

number = 2.5 / 1000000
print(f"Scientific Notation: {number}")
print(f"Decimal Representation: {number:.7f}")
9 is a function of the Numpy library in Python that formats a floating-point scalar. It then returns the decimal string representation of the floating-point value passed. The optional 
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
0 argument, when set to 
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
1 trims trailing zeros and any trailing decimal point if not needed.

Code:

>>> str(n)
'5.4321654321e-08'
6

Output:

>>> str(n)
'5.4321654321e-08'
7

Bạn có muốn trở thành một bậc thầy không? Kiểm tra cuốn sách câu đố tương tác của chúng tôi Coffee Break Numpy và tăng cường kỹ năng khoa học dữ liệu của bạn! (Liên kết Amazon mở trong tab mới.) Check out our interactive puzzle book Coffee Break NumPy and boost your data science skills! (Amazon link opens in new tab.)

Hướng dẫn python convert int to string without scientific notation - python chuyển đổi int thành chuỗi mà không cần ký hiệu khoa học

Giải pháp 6: Sử dụng mô -đun thập phânUsing decimal Module

Một cách giải quyết khác cho vấn đề đã cho là nhập mô -đun thập phân và sử dụng phiên bản thập phân của nó, như được hiển thị bên dưới.

>>> str(n)
'5.4321654321e-08'
8

Output:

>>> str(n)
'5.4321654321e-08'
9

⚠Cult: Cách tiếp cận này đã giành được công việc cho các giá trị nhỏ hơn

Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
2. Nó biến các giá trị ít hơn
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
2 thành ký hiệu khoa học của chúng.Caution: This approach won’t work for values smaller than
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
2. It turns values lesser than
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
2 to their scientific notation.

Câu hỏi thường gặp (liên quan)

Làm thế nào để in một số trong ký hiệu khoa học trong Python?How to Print a Number in Scientific Notation in Python?

Bạn có thể chuyển đổi một số thành ký hiệu khoa học của nó bằng

Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
4. Để chỉ định độ chính xác, tức là, số chữ số sau điểm thập phân, sử dụng
Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
5, trong đó & nbsp; ________ 76 & nbsp; đại diện cho số chữ số.

Example:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
0

Output:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
1

Làm thế nào để giới hạn phao đến hai số thập phân trong Python?How to Limit Floats to Two Decimal Points in Python?

Sử dụng hàm tích hợp

Scientific Notation: 2.5e-06
Decimal Representation: 0.0000025
7 để làm tròn số thập phân đã cho vào độ chính xác đã cho.

Example:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
2

Output:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
3

Đọc ở đây: Làm thế nào để giới hạn phao đến hai số thập phân trong Python?

Làm thế nào để phù hợp với ký hiệu khoa học trong một chuỗi?How to Match Scientific Notation in a String?

Tận dụng sức mạnh của Regex để phát hiện sự hiện diện của các số được thể hiện trong ký hiệu khoa học của chúng trong một chuỗi nhất định.

Example:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
4

Output:

>>> format(0.00000005, '.20f')
'0.00000005000000000000'
5

Các kỹ sư của Google, Facebook và Amazon là những bậc thầy biểu hiện thường xuyên. Nếu bạn cũng muốn trở thành một, hãy xem cuốn sách mới của chúng tôi: Cách thông minh nhất để học Python Regex (Amazon Kindle/Print, mở trong Tab mới).The Smartest Way to Learn Python Regex (Amazon Kindle/Print, opens in new tab).

Sự kết luận

Để kết thúc mọi thứ, nếu bạn đang sử dụng phiên bản Python mới hơn, thì nên sử dụng phương pháp theo nghĩa đen của chuỗi để đàn áp ký hiệu khoa học thành giá trị dấu phẩy động. Trong trường hợp bạn đang đối phó với một gấu trúc dữ liệu hoặc một mảng numpy, thì các giải pháp 4 và 5 được đề xuất là đáng để thử.

Với điều đó, chúng tôi đi đến cuối hướng dẫn này. Vui lòng đăng ký và theo dõi các hướng dẫn thú vị hơn trong tương lai. Học hỏi!subscribe and stay tuned for more interesting tutorials in the future. Happy learning!

Hướng dẫn python convert int to string without scientific notation - python chuyển đổi int thành chuỗi mà không cần ký hiệu khoa học

Tôi là một blogger Python chuyên nghiệp và người tạo nội dung. Tôi đã xuất bản nhiều bài báo và tạo ra các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc như một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Mạng.

Bạn có thể liên lạc với tôi @:

Upwork LinkedIn
LinkedIn

Làm cách nào để loại bỏ E+ trong Python?

Làm cách nào để loại bỏ E+ trên gấu trúc ?..
Giải pháp 1: Sử dụng .Round () df.Round (5).
Giải pháp 2: Sử dụng Áp dụng để thay đổi định dạng. df.apply (lambda x: ' % .5f' % x, trục = 1).
Giải pháp 3: Sử dụng. set_option () Lưu ý rằng ..
Giải pháp 4: Gán màn hình. float_format. Bạn có thể thay đổi định dạng hiển thị bằng cách sử dụng bất kỳ Python Formatter:.

Làm cách nào để ngăn chặn Python chuyển đổi sang ký hiệu khoa học?

Tóm tắt: Sử dụng Chuỗi cú pháp theo nghĩa đen f "{number: .nf}" để đàn áp ký hiệu khoa học của một số vào biểu diễn dấu phẩy động của nó.Use the string literal syntax f"{number:. nf}" to suppress the scientific notation of a number to its floating-point representation.

Làm thế nào để bạn thay đổi một số khoa học thành bình thường trong Python?

Chúng ta có thể dễ dàng định dạng đến các vị trí thập phân thô với "%f" giống như "%. 6f" theo mặc định." % F" % 8.99284722486562E-05 sản xuất '0,000090'." % f" % 0,01 tạo ra '0,010000'."%f" which is same as "%. 6f" by default. "%f" % 8.99284722486562e-05 produces '0.000090' . "%f" % 0.01 produces '0.010000' .

Làm thế nào để bạn in một chiếc phao mà không có ký hiệu khoa học trong Python?

Trong một chuỗi F đã cho, bạn có thể sử dụng định dạng định dạng {...: f} để nói với Python sử dụng ký hiệu điểm nổi cho số trước: hậu tố f.Do đó, để in số my_float = 0,00001 không khoa học, hãy sử dụng bản in biểu thức (f '{my_float: f}').print(f'{my_float:f}') .