Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Đây là mã của tôi:

x = 1.0
y = 100000.0    
print x/y

Thương số của tôi hiển thị là

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
0.

Có cách nào để đàn áp ký hiệu khoa học và làm cho nó hiển thị là

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
1 không? Tôi sẽ sử dụng kết quả như một chuỗi.

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Martineau

Huy hiệu vàng 115K2525 gold badges160 silver badges284 bronze badges

hỏi ngày 18 tháng 3 năm 2009 lúc 15:27Mar 18, 2009 at 15:27

2

Sử dụng phiên bản mới hơn

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
2 (cũng nhớ để chỉ định số chữ số sau
>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
3 bạn muốn hiển thị, điều này phụ thuộc vào số lượng nổi nhỏ). Xem ví dụ này:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'

Như được hiển thị ở trên, mặc định là 6 chữ số! Điều này không hữu ích cho ví dụ trường hợp của chúng tôi, vì vậy thay vào đó chúng tôi có thể sử dụng một cái gì đó như sau:

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'

Cập nhật

Bắt đầu trong Python 3.6, điều này có thể được đơn giản hóa với chuỗi được định dạng mới, như sau:

>>> f'{a:.20f}'
'-0.00000000000000007186'

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

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Aziz Altoaziz AltoAziz Alto

17.6K4 Huy hiệu vàng72 Huy hiệu bạc57 Huy hiệu Đồng4 gold badges72 silver badges57 bronze badges

4

Với các phiên bản mới hơn của Python (2.6 trở lên), bạn có thể sử dụng

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
4 để thực hiện những gì @SilentGhost đã đề xuất:

'{0:f}'.format(x/y)

Đã trả lời ngày 28 tháng 3 năm 2011 lúc 19:05Mar 28, 2011 at 19:05

Nmichaelsnmichaelsnmichaels

48.2K12 Huy hiệu vàng102 Huy hiệu bạc132 Huy hiệu đồng12 gold badges102 silver badges132 bronze badges

3

Một lựa 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.

import pandas as pd
pd.options.display.float_format = '{:.2f}'.format

Đã trả lời ngày 24 tháng 5 năm 2019 lúc 15:34May 24, 2019 at 15:34

JjanjjanJJAN

6971 Huy hiệu vàng7 Huy hiệu bạc12 Huy hiệu đồng1 gold badge7 silver badges12 bronze badges

1

Hầu hết các câu trả lời ở trên yêu cầu bạn chỉ định độ chính xác. Nhưng điều gì sẽ xảy ra nếu bạn muốn hiển thị những chiếc phao như thế này, không có số không cần thiết:

1
0.1
0.01
0.001
0.0001
0.00001
0.000001
0.000000000001

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
5 có câu trả lời:
>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
6

import numpy as np

def format_float(num):
    return np.format_float_positional(num, trim='-')

Đã trả lời ngày 25 tháng 9 năm 2019 lúc 21:06Sep 25, 2019 at 21:06

Dennis Golomazovdennis GolomazovDennis Golomazov

15.2k5 Huy hiệu vàng71 Huy hiệu bạc77 Huy hiệu đồng5 gold badges71 silver badges77 bronze badges

0

Trong trường hợp các mảng numpy, bạn có thể triệt tiêu với lệnh triệt tiêu như

import numpy as np
np.set_printoptions(suppress=True)

Joanis

8.27112 Huy hiệu vàng26 Huy hiệu bạc36 Huy hiệu đồng12 gold badges26 silver badges36 bronze badges

Đã trả lời ngày 24 tháng 1 lúc 7:36Jan 24 at 7:36

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Saran Zebsaran ZebSaran Zeb

Huy hiệu đồng 1111 Bạc5 Huy hiệu Đồng1 silver badge5 bronze badges

Điều này sẽ hoạt động cho bất kỳ số mũ nào:

def getExpandedScientificNotation(flt):
    str_vals = str(flt).split('e')
    coef = float(str_vals[0])
    exp = int(str_vals[1])
    return_val = ''
    if int(exp) > 0:
        return_val += str(coef).replace('.', '')
        return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))])
    elif int(exp) < 0:
        return_val += '0.'
        return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)])
        return_val += str(coef).replace('.', '')
    return return_val

Đã trả lời ngày 10 tháng 8 năm 2017 lúc 3:56Aug 10, 2017 at 3:56

Bạn có thể sử dụng chức năng

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
7 tích hợp.

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
0

Đã trả lời ngày 26 tháng 6 năm 2021 lúc 21:31Jun 26, 2021 at 21:31

qwerty_urlqwerty_urlqwerty_url

3933 Huy hiệu bạc8 Huy hiệu Đồng3 silver badges8 bronze badges

Điều này đang sử dụng câu trả lời của Captain Cucumber, nhưng với 2 bổ sung.

1) Cho phép hàm có được số ký hiệu phi khoa học và chỉ trả lại chúng như là (vì vậy bạn có thể ném rất nhiều đầu vào rằng một số số là 0,00003123 so với 3.123E-05 và vẫn có hoạt động chức năng.

2) Đã thêm hỗ trợ cho các số âm. (Trong hàm gốc, một số âm sẽ kết thúc như 0,0000-108904 từ -1.08904E-05)

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
1

Friskygrub

9393 Huy hiệu vàng12 Huy hiệu bạc24 Huy hiệu đồng3 gold badges12 silver badges24 bronze badges

Đã trả lời ngày 19 tháng 9 năm 2017 lúc 10:40Sep 19, 2017 at 10:40

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Nếu đó là

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
8 thì hãy sử dụng
>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
9 tích hợp để thực hiện chuyển đổi chẳng hạn:
>>> f'{a:.20f}'
'-0.00000000000000007186'
0 Trả lời: ________ 31

Đã trả lời ngày 6 tháng 2 năm 2015 lúc 8:43Feb 6, 2015 at 8:43

U-571U-571U-571

4992 Huy hiệu vàng7 Huy hiệu bạc23 Huy hiệu đồng2 gold badges7 silver badges23 bronze badges

Ngoài câu trả lời của SG, bạn cũng có thể sử dụng mô -đun thập phân:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
2

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

Gsamara

70.3K41 Huy hiệu vàng181 Huy hiệu bạc285 Huy hiệu Đồng41 gold badges181 silver badges285 bronze badges

Đã trả lời ngày 18 tháng 3 năm 2009 lúc 15:34Mar 18, 2009 at 15:34

DanadanaDana

31K17 Huy hiệu vàng62 Huy hiệu bạc72 Huy hiệu đồng17 gold badges62 silver badges72 bronze badges

1

Vì đây là kết quả hàng đầu trên Google, tôi sẽ đăng ở đây sau khi không tìm được giải pháp cho vấn đề của mình. Nếu bạn đang tìm cách định dạng giá trị hiển thị của một đối tượng float và nó vẫn còn một sự nổi - không phải là một chuỗi, bạn có thể sử dụng giải pháp này:If you are looking to format the display value of a float object and have it remain a float - not a string, you can use this solution:

Tạo một lớp mới sửa đổi cách hiển thị các giá trị float.

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
3

Bạn có thể tự sửa đổi độ chính xác bằng cách thay đổi các giá trị số nguyên trong

>>> f'{a:.20f}'
'-0.00000000000000007186'
2

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

Jared Marksjared MarksJared Marks

9088 Huy hiệu bạc13 Huy hiệu Đồng8 silver badges13 bronze badges

Một giải pháp đơn giản hơn để hiển thị một chiếc phao đến một số chữ số quan trọng tùy ý. Không có

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
5 hoặc danh sách toàn bộ yêu cầu ở đây:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
4

Tôi đang tước 0 và hiển thị các số nguyên đầy đủ trong ví dụ:

>>> f'{a:.20f}'
'-0.00000000000000007186'
4 thay vì 31400. Hãy thoải mái sửa đổi mã nếu đó không phải là thứ bạn thích.

Testing:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
5

Đã trả lời ngày 18 tháng 5 năm 2021 lúc 13:52May 18, 2021 at 13:52

Hướng dẫn how do i print without scientific notation in python? - làm cách nào để in mà không có ký hiệu khoa học trong python?

SurboulisedogsurprisedogSurpriseDog

4066 Huy hiệu bạc17 Huy hiệu đồng6 silver badges17 bronze badges

Sử dụng 3.6.4, tôi đã gặp một vấn đề tương tự một cách ngẫu nhiên, một số trong tệp đầu ra sẽ được định dạng với ký hiệu khoa học khi sử dụng điều này:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
6

Tất cả những gì tôi phải làm để sửa chữa nó là thêm 'f':

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
7

Đã trả lời ngày 13 tháng 4 năm 2018 lúc 23:07Apr 13, 2018 at 23:07

Tính đến 3.6 (có thể cũng hoạt động với 3.x hơi cũ hơn), đây là giải pháp của tôi:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
8

Mục đích của tính toán

>>> f'{a:.20f}'
'-0.00000000000000007186'
5 là để đảm bảo chúng ta có đủ độ chính xác để tránh xa ký hiệu khoa học (độ chính xác mặc định vẫn là 6).

Đối số

>>> f'{a:.20f}'
'-0.00000000000000007186'
6 thêm độ chính xác bổ sung để sử dụng cho các điểm thập phân. Vì điều này sử dụng định dạng
>>> f'{a:.20f}'
'-0.00000000000000007186'
7, sẽ không có số 0 không đáng kể nào được thêm vào (không giống như định dạng
>>> f'{a:.20f}'
'-0.00000000000000007186'
8).
>>> f'{a:.20f}'
'-0.00000000000000007186'
7 cũng sẽ chăm sóc các số nguyên vốn đã có số thập phân.

>>> f'{a:.20f}'
'-0.00000000000000007186'
7 không yêu cầu đầu vào
>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
9, do đó là diễn viên.

Đã trả lời ngày 22 tháng 7 năm 2019 lúc 1:52Jul 22, 2019 at 1:52

Alex Salex sAlex S

24.5K18 Huy hiệu vàng49 Huy hiệu bạc63 Huy hiệu đồng18 gold badges49 silver badges63 bronze badges

0

Tôi đã gặp một vấn đề tương tự một cách ngẫu nhiên, sử dụng giải pháp của mình:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
9

Đã trả lời ngày 25 tháng 3 lúc 19:28Mar 25 at 19:28

MostafamostafaMostafa

11 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

1

Làm cách nào để in số trong Python mà không có ký hiệu khoa học?

Sử dụng str ...
num = 1.2e-6 ..
print(num).
output = "{: .7f}".Định dạng (num).
print(output).

Làm cách nào để tắt ký hiệu khoa học trong Python?

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 cách nào để loại bỏ E+ trong gấu trúc?

Làm thế nào để ngăn chặn ký hiệu khoa học trong 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 Display.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 thế nào để bạn in một mảng mà không có ký hiệu khoa học trong Python?

Sử dụng Numpy ...
an_array = np.Mảng ([1, 1000.1]).
print(an_array).
NP.set_printoptions (triệt tiêu = true).
print(an_array).