Python có hỗ trợ ký hiệu khoa học không?

Cung cấp khả năng kiểm soát làm tròn, cắt và đệm. Sử dụng và giả định làm tròn không thiên vị của IEEE. Sử dụng thuật toán “Dragon4”

Thông số . x python float hoặc vô hướng nổi numpy

Giá trị để định dạng

độ chính xác số nguyên không âm hoặc Không, tùy chọn

Số chữ số in tối đa. Có thể là Không nếu là Đúng, nhưng phải là số nguyên nếu duy nhất là Sai

duy nhất boolean, tùy chọn

Nếu Đúng, hãy sử dụng chiến lược tạo chữ số cung cấp biểu diễn ngắn nhất xác định duy nhất số dấu phẩy động từ các giá trị khác cùng loại, bằng cách làm tròn hợp lý. Nếu độ chính xác được cung cấp ít chữ số hơn mức cần thiết có thể được in. Nếu min_digits được cung cấp thì có thể in nhiều hơn, trong trường hợp đó, chữ số cuối cùng được làm tròn với cách làm tròn không thiên vị. Nếu Sai, các chữ số được tạo như thể in một giá trị có độ chính xác vô hạn và dừng sau các chữ số chính xác, làm tròn giá trị còn lại bằng cách làm tròn không thiên vị

trim một trong số 'k', '. ', '0', '-', tùy chọn

Kiểm soát việc cắt bớt các chữ số ở cuối sau khi xử lý, như sau

  • 'k'. giữ các số 0 ở cuối, giữ nguyên dấu thập phân (không cắt xén)

  • ‘. ’. cắt bỏ tất cả các số 0 ở cuối, để lại dấu thập phân

  • '0'. cắt tất cả trừ số 0 trước dấu thập phân. Chèn số không nếu nó bị thiếu

  • '-'. cắt bỏ các số 0 ở cuối và bất kỳ dấu thập phân nào ở cuối

dấu boolean, tùy chọn

Có hiển thị dấu cho giá trị dương hay không

pad_left số nguyên không âm, tùy chọn

Đệm phía bên trái của chuỗi bằng khoảng trắng cho đến khi có ít nhất nhiều ký tự ở bên trái dấu thập phân

exp_digits số nguyên không âm, tùy chọn

Đệm số mũ bằng các số 0 cho đến khi nó chứa ít nhất nhiều chữ số này. Nếu bỏ qua, số mũ sẽ có ít nhất 2 chữ số

min_digits số nguyên không âm hoặc Không, tùy chọn

Số chữ số tối thiểu để in. Điều này chỉ có tác dụng cho unique=True. Trong trường hợp đó, nhiều chữ số hơn mức cần thiết để nhận dạng duy nhất giá trị có thể được in và làm tròn không thiên vị

tan(pi/2) làm ví dụ của tôi. Không làm tròn, nó trả về 1. 633123935319537e+16 (điều này là do pi được cho dưới dạng hằng số, không phải là số vô tỷ). Tuy nhiên, khi tôi đặt nó qua hàm round, nó trả về -272241. 80841

>>> from math import pi, tan
>>> tan(pi/2)
1.633123935319537e+16
>>> round(tan(pi/2), 5)
1.633123935319537e+16

Số khá lớn đó bằng 16331239353195370. 0 và là số nguyên không có phần phân số

>>> tan(pi/2) % 1.0
0.0

Vì vậy, khi bạn làm tròn nó đến năm chữ số thập phân, không có gì thay đổi

Đối với ví dụ khác của bạn, một lần nữa bạn nên kiểm tra mã của mình

>>> from math import cos
>>> cos(pi/2)
6.123233995736766e-17
>>> round(cos(pi/2), 5)
0.0

Cũng không phải là tiêu cực

Python dựa vào chất lượng của các quy trình toán học được cung cấp bởi nền tảng của bạn (hệ điều hành và phần cứng). Rất khó có khả năng là nếu bạn đang chạy một số kết hợp kỳ lạ với các thói quen dấu chấm động thực sự tồi tệ, thì Python có thể trả về kết quả kỳ lạ mà bạn đã thấy

Nhưng nhiều khả năng là bạn đã phạm sai lầm ở đâu đó

Ngoài ra, hầu hết các nhận xét của Terry về sự khác biệt giữa làm tròn số float và hiển thị số float đều hợp lệ

Phao trong Python có độ chính xác 53 bit. Đó là khoảng 16 hoặc 17 chữ số thập phân. (Để đơn giản, hãy gọi nó là 16. ) Phao 0. 0 thực sự là 0. 0000000000000000 mặc dù nó được hiển thị bằng số lượng số 0 tối thiểu cần thiết. Bạn không thể làm tròn nó thành 0. 00000 sử dụng hàm round. Nhưng bạn có thể sử dụng định dạng chuỗi để hiển thị nó đến năm chữ số thập phân

Terry nói

pi là một hằng số

Chắc chắn, đó là những gì Pattydaone nói. Nhưng toán học thực sự π là một số vô tỉ, và tan(π/2) là không xác định

Tôi có một danh sách các số nguyên mà tôi đang sử dụng làm nhãn trên biểu đồ và tôi cần biểu diễn chúng theo ký hiệu khoa học. Hầu hết các câu hỏi khác mà tôi thấy liên quan đến giá trị float, khi số đó giống như 23. 16274586938 nhưng các số của tôi nằm trong khoảng từ 2600000000 đến 2900000000 và cần biểu thị chúng là 2. 61e^8 hoặc bất cứ giá trị nào. Tôi đã thử sử dụng Decimal, {. 2E} và cả hai đều không hiệu quả với tôi. Danh sách này có khoảng 50 nghìn giá trị trong đó, với khoảng 12 chữ số cho mỗi giá trị

Các giải pháp tôi tìm thấy trực tuyến chỉ hoạt động khi bạn có một giá trị duy nhất. Không phải khi lặp qua một danh sách

danh sách của tôi trông giống như

x = [5160000000000,63720000000000,326723000000000,3400000000000,. ] cho các giá trị 50k

"{:.2e}".format(arr_of_frequencies[i])

Sử dụng cái này, trong đó arr_of_frequencies là danh sách của tôi hoặc một số biến thể của cái này gây ra lỗi cho tôi

IndexError: cannot fit 'int' into an index-sized integer

Bạn có thể sử dụng ký hiệu khoa học trong Python không?

Bạn có thể sử dụng str. format() để in một số theo ký hiệu khoa học . sử dụng str. format() trên một số có ""{. e}" dưới dạng str để định dạng số theo ký hiệu khoa học.

Python có hỗ trợ ký hiệu e không?

Bạn có thể sử dụng Ký hiệu điện tử để nhập các số rất lớn và rất nhỏ (hoặc bất kỳ số nào, đối với vấn đề đó) vào Python . Sau này bạn sẽ thấy cách tạo số in Python bằng ký hiệu điện tử. Mặc dù chúng tôi đã nhập các số trong ký hiệu điện tử, nhưng câu trả lời xuất hiện dưới dạng số thập phân thông thường.

Làm cách nào để viết 1e6 bằng Python?

Python lấy số ở bên trái chữ e và nhân nó với 10 lũy thừa của số đứng sau chữ e. Vậy 1e6 tương đương với 1×10⁶ . Chữ 1e-4 được hiểu là 10 được nâng lên lũy thừa -4 , tức là 1/10000 hoặc 0. 0001. Không giống như số nguyên, số float có kích thước tối đa.