Ini adalah era data besar, dan setiap hari semakin banyak bisnis yang mencoba memanfaatkan data mereka untuk membuat keputusan yang tepat. Banyak bisnis beralih ke ekosistem ilmu data kuat Python untuk menganalisis data mereka, sebagaimana dibuktikan dengan meningkatnya popularitas Python di ranah ilmu data Show
Satu hal yang harus diingat oleh setiap praktisi ilmu data adalah bagaimana kumpulan data dapat menjadi bias. Menarik kesimpulan dari data yang bias dapat menyebabkan kesalahan yang mahal Ada banyak cara bias dapat menyusup ke dalam kumpulan data. Jika Anda telah mempelajari beberapa statistik, Anda mungkin akrab dengan istilah seperti bias pelaporan, bias pemilihan, dan bias pengambilan sampel. Ada jenis bias lain yang memainkan peran penting saat Anda berurusan dengan data numerik. bias pembulatan Pada artikel ini, Anda akan belajar
Ikuti Kuis. Uji pengetahuan Anda dengan kuis "Angka Pembulatan dengan Python" interaktif kami. Setelah selesai Anda akan menerima skor sehingga Anda dapat melacak kemajuan belajar Anda dari waktu ke waktu Ikuti Kuis » Artikel ini bukan risalah tentang presisi numerik dalam komputasi, meskipun kami akan membahasnya secara singkat. Hanya keakraban dengan dasar-dasar Python yang diperlukan, dan matematika yang terlibat di sini harus terasa nyaman bagi siapa pun yang akrab dengan aljabar sekolah menengah yang setara. Mari kita mulai dengan melihat mekanisme pembulatan bawaan Python Fungsi def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier _9 Built-in PythonPython memiliki fungsi 9 bawaan yang mengambil dua argumen numerik, 1 dan 2, dan mengembalikan angka 1 dibulatkan menjadi 2. Argumen _2 default ke nol, jadi meninggalkannya menghasilkan angka yang dibulatkan menjadi bilangan bulat. Seperti yang akan Anda lihat, 9 mungkin tidak berfungsi seperti yang Anda harapkanCara kebanyakan orang diajari untuk membulatkan angka kira-kira seperti ini
Ini adalah algoritma yang mudah. Misalnya, angka 1 yang dibulatkan ke bilangan bulat terdekat adalah 2. Angka 3 dibulatkan menjadi satu tempat desimal adalah 4Sekarang buka sesi juru bahasa dan bulatkan 1 ke bilangan bulat terdekat menggunakan fungsi bawaan Python>>> _Terkesiap Bagaimana _9 menangani nomor 8?>>> _Jadi, _9 putaran 8 hingga 01, dan 1 hingga 01Sebelum Anda mengangkat masalah pada pelacak bug Python, izinkan saya meyakinkan Anda bahwa 04 seharusnya mengembalikan 01. Ada alasan bagus mengapa _9 berperilaku seperti ituDalam artikel ini, Anda akan belajar bahwa ada lebih banyak cara untuk membulatkan angka daripada yang mungkin Anda duga, masing-masing dengan keuntungan dan kerugian yang unik. 9 berperilaku sesuai dengan strategi pembulatan tertentu—yang mungkin atau mungkin bukan strategi yang Anda butuhkan untuk situasi tertentuAnda mungkin bertanya-tanya, "Bisakah cara saya membulatkan angka benar-benar berdampak sebesar itu?" Hilangkan iklanSeberapa Besar Dampak Pembulatan?Misalkan Anda mengalami hari yang sangat beruntung dan menemukan $100 di lapangan. Daripada menghabiskan semua uang Anda sekaligus, Anda memutuskan untuk memainkannya dengan cerdas dan menginvestasikan uang Anda dengan membeli beberapa lembar saham yang berbeda Nilai saham tergantung pada penawaran dan permintaan. Semakin banyak orang yang ingin membeli suatu saham, maka semakin banyak pula nilai saham tersebut, begitu pula sebaliknya. Di pasar saham volume tinggi, nilai saham tertentu dapat berfluktuasi setiap detik Mari kita jalankan eksperimen kecil. Kami akan menganggap nilai keseluruhan saham yang Anda beli berfluktuasi dengan angka acak kecil setiap detik, katakanlah antara $0. 05 dan -$0. 05. Fluktuasi ini belum tentu menjadi nilai yang bagus dengan hanya dua tempat desimal. Misalnya, nilai keseluruhan dapat meningkat sebesar $0. 031286 satu detik dan kurangi detik berikutnya sebesar $0. 028476 Anda tidak ingin melacak nilai Anda ke tempat desimal kelima atau keenam, jadi Anda memutuskan untuk memotong semuanya setelah tempat desimal ketiga. Dalam jargon pembulatan, ini disebut memotong angka ke tempat desimal ketiga. Ada beberapa kesalahan yang diharapkan di sini, tetapi dengan mempertahankan tiga angka desimal, kesalahan ini tidak akan signifikan. Benar? Untuk menjalankan percobaan kami menggunakan Python, mari kita mulai dengan menulis fungsi 08 yang memotong angka menjadi tiga tempat desimal>>> _Fungsi _08 bekerja dengan terlebih dahulu menggeser titik desimal pada angka 1 tiga tempat ke kanan dengan mengalikan 1 dengan 12. Bagian bilangan bulat dari nomor baru ini diambil dengan 13. Terakhir, titik desimal digeser tiga tempat ke belakang ke kiri dengan membagi 1 dengan 12Selanjutnya, mari kita tentukan parameter awal simulasi. Anda memerlukan dua variabel. satu untuk melacak nilai sebenarnya dari saham Anda setelah simulasi selesai dan satu untuk nilai saham Anda setelah Anda memotong ke tiga tempat desimal di setiap langkah Mulailah dengan menginisialisasi variabel-variabel ini ke 16>>> _Sekarang mari jalankan simulasi selama 1.000.000 detik (sekitar 11. 5 hari). Untuk setiap detik, hasilkan nilai acak antara 17 dan 18 dengan fungsi 19 di modul 20, lalu perbarui 21 dan 22>>> _Daging dari simulasi berlangsung di 23 loop, yang loop di atas 24 nomor antara 25 dan 26. Nilai yang diambil dari _27 pada setiap langkah disimpan dalam variabel 28, yang kita gunakan di sini karena kita sebenarnya tidak membutuhkan nilai ini di dalam loopPada setiap langkah loop, nomor acak baru antara 17 dan 18 dihasilkan menggunakan 31 dan ditugaskan ke variabel 32. Nilai baru investasi Anda dihitung dengan menambahkan 32 ke 34, dan total terpotong dihitung dengan menambahkan 32 ke 36 dan kemudian memotong nilai ini dengan 08Seperti yang Anda lihat dengan memeriksa variabel _34 setelah menjalankan loop, Anda hanya kehilangan sekitar $3. 55. Namun, jika Anda telah melihat ________30______36, Anda akan berpikir bahwa Anda telah kehilangan hampir semua uang AndaCatatan. Dalam contoh di atas, fungsi _40 digunakan untuk menyemai generator bilangan acak semu sehingga Anda dapat mereproduksi keluaran yang ditunjukkan di siniUntuk mempelajari lebih lanjut tentang keacakan di Python, lihat Real Python Menghasilkan Data Acak di Python (Panduan) Abaikan sejenak bahwa _9 tidak berperilaku seperti yang Anda harapkan, mari coba jalankan kembali simulasi. Kami akan menggunakan _9 kali ini untuk membulatkan ke tiga desimal pada setiap langkah, dan 43 simulasi lagi untuk mendapatkan hasil yang sama seperti sebelumnya>>> _Apa bedanya Mengejutkan seperti yang terlihat, kesalahan yang tepat ini menyebabkan kehebohan di awal 1980-an ketika sistem yang dirancang untuk mencatat nilai Bursa Efek Vancouver memotong nilai indeks keseluruhan menjadi tiga tempat desimal alih-alih pembulatan. Kesalahan pembulatan telah mempengaruhi pemilu dan bahkan mengakibatkan hilangnya nyawa Cara Anda membulatkan angka itu penting, dan sebagai pengembang dan perancang perangkat lunak yang bertanggung jawab, Anda perlu mengetahui apa masalah umumnya dan cara mengatasinya. Mari selami dan selidiki apa saja metode pembulatan yang berbeda dan bagaimana Anda dapat mengimplementasikan masing-masing dengan Python murni Hilangkan iklanKumpulan MetodeAda banyak strategi pembulatan, masing-masing dengan kelebihan dan kekurangan. Di bagian ini, Anda akan mempelajari beberapa teknik yang paling umum, dan bagaimana teknik tersebut dapat memengaruhi data Anda PemotonganMetode yang paling sederhana, meskipun paling kasar, untuk membulatkan angka adalah memotong angka menjadi sejumlah digit tertentu. Saat Anda memotong angka, Anda mengganti setiap digit setelah posisi tertentu dengan 0. Berikut beberapa contohnya NilaiTerpotong Ke Hasil12. 345 Tempat puluhan1012. 345Tempat One1212. 345 Tempat persepuluhan12. 312. 345 Tempat keseratus12. 34 Anda telah melihat satu cara untuk mengimplementasikan ini di fungsi 08 dari bagian. Dalam fungsi itu, nomor input dipotong menjadi tiga angka desimal
Anda dapat menggeneralisasi proses ini dengan mengganti 12 dengan angka 10ᵖ ( 49 dipangkatkan pth), di mana p adalah jumlah tempat desimal untuk dipotong menjadi
Dalam versi 08 ini, argumen kedua default ke 25 sehingga jika tidak ada argumen kedua yang diteruskan ke fungsi, maka 08 mengembalikan bagian bilangan bulat dari angka berapa pun yang diteruskan ke fungsi tersebutFungsi _08 bekerja dengan baik untuk bilangan positif dan negatif>>> _Anda bahkan dapat meneruskan angka negatif ke 54 untuk memotong ke digit di sebelah kiri titik desimal>>> _Saat Anda memotong angka positif, Anda membulatkannya ke bawah. Demikian pula, memotong angka negatif akan membulatkan angka tersebut. Dalam artian, pemotongan adalah gabungan dari cara pembulatan tergantung dari tanda angka yang Anda bulatkan Mari kita lihat masing-masing metode pembulatan ini satu per satu, dimulai dengan pembulatan MembulatkanStrategi pembulatan kedua yang akan kita lihat disebut “pembulatan. ” Strategi ini selalu membulatkan angka hingga sejumlah digit tertentu. Tabel berikut merangkum strategi ini NilaiBulatkan Ke Hasil12. 345 Tempat Puluhan2012. 345 Tempat seseorang1312. 345 Tempat persepuluhan12. 412. 345 Tempat keseratus12. 35 Untuk menerapkan strategi "pembulatan" dengan Python, kami akan menggunakan fungsi dari modul 56Fungsi _55 mendapatkan namanya dari istilah "plafon", yang digunakan dalam matematika untuk menjelaskan bilangan bulat terdekat yang lebih besar dari atau sama dengan angka yang diberikanSetiap angka yang bukan bilangan bulat terletak di antara dua bilangan bulat berurutan. Misalnya, angka 58 terletak pada interval antara 59 dan 01. "Plafon" adalah yang lebih besar dari dua titik akhir interval. Yang lebih rendah dari dua titik akhir disebut "lantai". ” Jadi, langit-langit _58 adalah 01, dan lantai 58 adalah 59Dalam matematika, fungsi khusus yang disebut fungsi langit-langit memetakan setiap angka ke langit-langitnya. Untuk memungkinkan fungsi plafon menerima bilangan bulat, batas atas bilangan bulat didefinisikan sebagai bilangan bulat itu sendiri. Jadi, plafon dari bilangan _01 adalah 01Dalam Python, 67 mengimplementasikan fungsi langit-langit dan selalu mengembalikan bilangan bulat terdekat yang lebih besar dari atau sama dengan inputnya>>> _Perhatikan bahwa langit-langit 68 adalah 25, bukan 70. Ini masuk akal karena 25 adalah bilangan bulat terdekat dengan 68 yang lebih besar atau sama dengan 68Mari tulis fungsi yang disebut _74 yang menerapkan strategi "pembulatan" 0Anda mungkin memperhatikan bahwa _74 sangat mirip dengan 08. Pertama, titik desimal di _1 digeser ke kanan dengan jumlah tempat yang benar dengan mengalikan 1 dengan 79. Nilai baru ini dibulatkan ke bilangan bulat terdekat menggunakan 67, lalu koma desimal digeser kembali ke kiri dengan membaginya dengan 79Pola menggeser titik desimal ini, menerapkan beberapa metode pembulatan untuk membulatkan ke bilangan bulat, dan kemudian menggeser kembali titik desimal akan muncul berulang kali saat kami menyelidiki lebih banyak metode pembulatan. Bagaimanapun, ini adalah algoritme mental yang kita gunakan manusia untuk membulatkan angka dengan tangan Mari kita lihat seberapa baik _74 berfungsi untuk masukan yang berbeda>>> 1Sama seperti _08, Anda dapat memberikan nilai negatif ke 54>>> 2Saat Anda melewatkan angka negatif ke _54, angka dalam argumen pertama 74 dibulatkan ke jumlah digit yang benar di sebelah kiri titik desimalCoba tebak apa yang _87 dikembalikan>>> 3Apakah _88 seperti yang Anda harapkan?Jika Anda memeriksa logika yang digunakan dalam mendefinisikan 74—khususnya, cara kerja fungsi 67—maka masuk akal bahwa 87 mengembalikan 88. Namun, beberapa orang secara alami mengharapkan simetri sekitar nol saat membulatkan angka, sehingga jika 8 dibulatkan menjadi 01, maka 95 harus dibulatkan menjadi 96Mari kita buat beberapa terminologi. Untuk tujuan kami, kami akan menggunakan istilah "pembulatan" dan "pembulatan ke bawah" menurut diagram berikut Bulatkan ke kanan dan ke bawah ke kiri. (Gambar. David Amos)Pembulatan ke atas selalu membulatkan angka ke kanan pada garis bilangan, dan pembulatan ke bawah selalu membulatkan angka ke kiri pada garis bilangan Hilangkan iklanMembulatkan ke BawahLawan dari "pembulatan ke atas" adalah strategi "pembulatan ke bawah", yang selalu membulatkan angka ke bawah hingga jumlah digit tertentu. Berikut adalah beberapa contoh yang menggambarkan strategi ini NilaiDibulatkan Ke Bawah Ke Hasil12. 345 Tempat puluhan1012. 345Tempat One1212. 345 Tempat persepuluhan12. 312. 345 Tempat keseratus12. 34 Untuk menerapkan strategi "pembulatan ke bawah" dengan Python, kita dapat mengikuti algoritme yang sama dengan yang kita gunakan untuk 97 dan 74. Pertama-tama geser titik desimal, lalu bulatkan menjadi bilangan bulat, dan terakhir geser kembali titik desimalDi _74, kami menggunakan 67 untuk membulatkan ke atas ke langit-langit angka setelah menggeser titik desimal. Namun, untuk strategi "pembulatan ke bawah", kita perlu membulatkan ke dasar angka setelah menggeser koma desimalBeruntung bagi kami, modul _56 memiliki fungsi yang mengembalikan lantai inputnya>>> 4Inilah definisi _03 5Itu terlihat seperti 74, kecuali 67 telah diganti dengan 06Anda dapat menguji 03 pada beberapa nilai yang berbeda>>> 6Efek dari 74 dan 03 bisa sangat ekstrim. Dengan membulatkan angka dalam kumpulan data besar ke atas atau ke bawah, Anda berpotensi menghilangkan banyak presisi dan secara drastis mengubah perhitungan yang dibuat dari dataSebelum kita membahas strategi pembulatan lebih lanjut, mari kita berhenti dan luangkan waktu sejenak untuk berbicara tentang bagaimana pembulatan dapat membuat data Anda bias Selingan. Bias PembulatanAnda sekarang telah melihat tiga metode pembulatan. 08, 74, dan 03. Ketiga teknik ini agak kasar dalam hal mempertahankan jumlah presisi yang masuk akal untuk angka tertentuAda satu perbedaan penting antara 08 dan 74 dan 03 yang menyoroti aspek penting pembulatan. simetri sekitar nolIngatlah bahwa _74 tidak simetris di sekitar nol. Dalam istilah matematika, fungsi f(x) simetris di sekitar nol jika, untuk nilai x berapa pun, f(x) + f(-x) = 0. Misalnya, 17 mengembalikan 01, tetapi 87 mengembalikan 70. Fungsi _03 juga tidak simetris di sekitar 0Di sisi lain, fungsi _08 simetris di sekitar nol. Ini karena, setelah menggeser titik desimal ke kanan, 08 memotong digit yang tersisa. Ketika nilai awal positif, ini sama dengan membulatkan angka ke bawah. Bilangan negatif dibulatkan ke atas. Jadi, _24 mengembalikan 59, dan 26 mengembalikan 70Konsep simetri memperkenalkan gagasan bias pembulatan, yang menjelaskan bagaimana pembulatan memengaruhi data numerik dalam kumpulan data Strategi “pembulatan” memiliki bias bulat menuju tak terhingga positif, karena nilainya selalu dibulatkan ke atas searah tak terhingga positif. Demikian pula, strategi "pembulatan ke bawah" memiliki putaran menuju bias infinity negatif Strategi "pemotongan" menunjukkan bias putaran menuju tak terhingga negatif pada nilai positif dan putaran menuju tak terhingga positif untuk nilai negatif. Fungsi pembulatan dengan perilaku ini dikatakan memiliki bias putaran menuju nol, secara umum Mari kita lihat bagaimana ini bekerja dalam praktiknya. Perhatikan daftar pelampung berikut >>> 7Mari hitung nilai rata-rata dari nilai-nilai di 28 menggunakan fungsi>>> ________30______8 Sekarang terapkan masing-masing 74, 03, dan 08 dalam pemahaman daftar untuk membulatkan setiap angka di 28 ke satu tempat desimal dan menghitung rata-rata baru>>> 9Setelah setiap angka di 28 dibulatkan, rata-rata yang baru adalah sekitar 35, yang lebih besar dari rata-rata sebenarnya sekitar 36. Pembulatan ke bawah akan menggeser rata-rata ke bawah menjadi sekitar 37. Rata-rata dari nilai terpotong adalah sekitar 38 dan paling dekat dengan rata-rata sebenarnyaContoh ini tidak menyiratkan bahwa Anda harus selalu memotong saat Anda perlu membulatkan nilai individual sambil mempertahankan nilai rata-rata sedekat mungkin. Daftar _28 berisi jumlah nilai positif dan negatif yang sama. Fungsi _08 akan berperilaku seperti 74 pada daftar semua nilai positif, dan seperti 03 pada daftar semua nilai negatifApa yang diilustrasikan oleh contoh ini adalah pengaruh bias pembulatan terhadap nilai yang dihitung dari data yang telah dibulatkan. Anda perlu mengingat efek ini saat menarik kesimpulan dari data yang telah dibulatkan Biasanya, saat membulatkan, Anda tertarik untuk membulatkan ke angka terdekat dengan presisi tertentu, bukan hanya membulatkan semuanya ke atas atau ke bawah Misalnya, jika seseorang meminta Anda untuk membulatkan angka 43 dan 44 ke satu tempat desimal, Anda mungkin akan menjawab dengan cepat dengan 58 dan 46. Fungsi _08, 74, dan 03 tidak melakukan hal seperti iniBagaimana dengan nomor _50? . Dalam arti tertentu, 58 dan 46 keduanya adalah angka terdekat ke 50 dengan presisi tempat desimal tunggal. Nomor 50 disebut seri sehubungan dengan 58 dan 46. Dalam kasus seperti ini, Anda harus menetapkan tiebreakCara kebanyakan orang diajari memutuskan ikatan adalah dengan membulatkan ke angka yang lebih besar dari dua kemungkinan Hilangkan iklanMembulatkan Setengah Ke AtasStrategi “pembulatan setengah ke atas” membulatkan setiap angka ke angka terdekat dengan presisi yang ditentukan, dan memutuskan hubungan dengan pembulatan ke atas. Berikut beberapa contohnya NilaiBulatkan Separuh Ke Atas Hasil13. 825 tempat puluhan1013. 825 Tempat Satu1413. 825 Tempat persepuluhan13. 813. 825 Tempat keseratus13. 83 Untuk menerapkan strategi "pembulatan setengah" dengan Python, Anda mulai seperti biasa dengan menggeser koma desimal ke kanan dengan jumlah tempat yang diinginkan. Namun, pada titik ini, Anda memerlukan cara untuk menentukan apakah angka tepat setelah titik desimal yang digeser lebih kecil atau lebih besar dari atau sama dengan 61Salah satu cara melakukannya adalah dengan menambahkan _62 ke nilai yang digeser lalu dibulatkan ke bawah dengan 06. Ini bekerja karena
Inilah tampilannya di Python _0Perhatikan bahwa _68 sangat mirip dengan 03. Ini mungkin agak kontra-intuitif, tetapi secara internal 68 hanya dibulatkan ke bawah. Caranya adalah dengan menjumlahkan _62 setelah menggeser titik desimal agar hasil pembulatan ke bawah sesuai dengan nilai yang diharapkanMari kita uji _68 pada beberapa nilai untuk melihat apakah itu berhasil>>> 1Karena _68 selalu memutuskan ikatan dengan pembulatan ke yang lebih besar dari dua nilai yang mungkin, nilai negatif seperti 95 dibulatkan ke 70, bukan ke 96>>> 2Besar. Anda sekarang akhirnya bisa mendapatkan hasil bahwa fungsi 9 built-in ditolak untuk Anda>>> 3Namun, sebelum Anda terlalu bersemangat, mari kita lihat apa yang terjadi jika Anda mencoba membulatkan 78 ke 01 tempat desimal>>> 4Tunggu. Kami baru saja membahas bagaimana ikatan dibulatkan ke yang lebih besar dari dua nilai yang mungkin. _78 terletak di tengah-tengah 81 dan 82. Karena _81 lebih besar dari keduanya, 84 harus mengembalikan 81. Namun sebaliknya, kami mendapatkan _82Apakah ada bug di fungsi _68?Ketika _68 membulatkan 78 menjadi dua tempat desimal, hal pertama yang dilakukannya adalah mengalikan 78 dengan 16. Mari pastikan ini berfungsi seperti yang diharapkan>>> 5Yah… itu salah. Tapi itu menjelaskan mengapa _84 mengembalikan -1. 23. Mari kita lanjutkan algoritma _68 selangkah demi selangkah, memanfaatkan 28 di REPL untuk mengingat output nilai terakhir di setiap langkah>>> 6Meskipun _95 sangat dekat dengan 96, bilangan bulat terdekat yang kurang dari atau sama dengan itu adalah 97. Ketika titik desimal digeser kembali ke kiri, nilai akhirnya adalah 82Nah, sekarang Anda tahu bagaimana _84 mengembalikan 82 meskipun tidak ada kesalahan logis, tetapi mengapa Python mengatakan bahwa 01 adalah 02? Ke samping. Dalam sesi juru bahasa Python, ketikkan yang berikut ini >>> ________41______7 Melihat ini untuk pertama kalinya bisa sangat mengejutkan, tetapi ini adalah contoh klasik dari kesalahan representasi titik-mengambang. Itu tidak ada hubungannya dengan Python. Kesalahan tersebut berkaitan dengan cara mesin menyimpan angka titik-mengambang di memori Sebagian besar komputer modern menyimpan angka floating-point sebagai desimal biner dengan presisi 53-bit. Hanya angka yang memiliki representasi desimal biner terbatas yang dapat dinyatakan dalam 53 bit yang disimpan sebagai nilai eksak. Tidak setiap angka memiliki representasi desimal biner yang terbatas Misalnya, angka desimal 03 memiliki representasi desimal yang terbatas, tetapi representasi biner yang tidak terbatas. Sama seperti pecahan 1/3 hanya dapat direpresentasikan dalam desimal sebagai desimal berulang tak terhingga 04, pecahan 05 hanya dapat dinyatakan dalam biner sebagai desimal berulang tak terhingga 06Nilai dengan representasi biner tak terbatas dibulatkan ke nilai perkiraan untuk disimpan dalam memori. Metode yang digunakan sebagian besar mesin untuk membulatkan ditentukan menurut standar IEEE-754, yang menentukan pembulatan ke pecahan biner terdekat yang dapat diwakili Dokumen Python memiliki bagian yang disebut Floating Point Arithmetic. Masalah dan Keterbatasan yang mengatakan tentang angka 0. 1
Untuk risalah yang lebih mendalam tentang aritmatika titik-mengambang, lihat artikel David Goldberg Yang Harus Diketahui Setiap Ilmuwan Komputer Tentang Aritmatika Titik-Mengambang, aslinya diterbitkan dalam jurnal ACM Computing Surveys, Vol. 23, Tidak. 1 Maret 1991 Fakta bahwa Python mengatakan bahwa _01 adalah 02 adalah artefak kesalahan representasi titik-mengambang. Anda mungkin bertanya pada diri sendiri, "Oke, tetapi apakah ada cara untuk memperbaikinya?" Angka floating-point tidak memiliki presisi yang tepat, dan karenanya tidak boleh digunakan dalam situasi di mana presisi adalah yang terpenting. Untuk aplikasi di mana presisi yang tepat diperlukan, Anda dapat menggunakan kelas 11 dari modul 12 Python. Anda akan mempelajari lebih lanjut tentang kelas _11 di bawah iniJika Anda telah menentukan bahwa kelas 14 standar Python sudah cukup untuk aplikasi Anda, beberapa kesalahan sesekali di 68 karena kesalahan representasi titik-mengambang seharusnya tidak menjadi perhatianSekarang setelah Anda merasakan bagaimana mesin membulatkan angka dalam memori, mari lanjutkan diskusi kita tentang strategi pembulatan dengan melihat cara lain untuk memutuskan seri Hilangkan iklanMembulatkan Setengah Ke BawahStrategi "membulatkan setengah ke bawah" membulatkan ke angka terdekat dengan presisi yang diinginkan, seperti metode "membulatkan setengah ke atas", kecuali strategi ini memutus ikatan dengan membulatkan ke angka yang lebih kecil dari dua angka. Berikut beberapa contohnya NilaiBulatkan Setengah Ke Bawah Ke Hasil13. 825 tempat puluhan1013. 825 Tempat Satu1413. 825 Tempat persepuluhan13. 813. 825 Tempat keseratus13. 82 Anda dapat menerapkan strategi "pembulatan setengah ke bawah" dengan Python dengan mengganti 06 di fungsi 68 dengan 67 dan mengurangi 62 alih-alih menambahkan 0Mari kita periksa _20 terhadap beberapa kasus uji>>> 1Baik _68 dan 20 tidak memiliki bias secara umum. Namun, membulatkan data dengan banyak ikatan memang menimbulkan bias. Sebagai contoh ekstrem, perhatikan daftar angka berikut>>> 2Mari kita hitung rata-rata dari angka-angka ini >>> 3Selanjutnya, hitung rata-rata data setelah dibulatkan ke satu tempat desimal dengan ________41______68 dan 20>>> 4Setiap angka di 28 adalah seri sehubungan dengan pembulatan ke satu tempat desimal. Fungsi _68 memperkenalkan putaran menuju bias tak terhingga positif, dan 20 memperkenalkan putaran menuju bias tak terhingga negatifStrategi pembulatan yang tersisa akan kami diskusikan semua upaya untuk mengurangi bias ini dengan cara yang berbeda Membulatkan Setengah Jauh Dari NolJika Anda memeriksa 68 dan 20 dengan cermat, Anda akan melihat bahwa tidak satu pun dari fungsi ini yang simetris di sekitar nol>>> 5Salah satu cara untuk memperkenalkan simetri adalah dengan selalu membulatkan dasi dari nol. Tabel berikut mengilustrasikan cara kerjanya NilaiBulatkan Separuh Dari Nol Ke Hasil15. 25 Tempat Puluhan2015. 25 Tempat Satu1515. 25 Tempat persepuluhan15. 3-15. 25 tempat Puluhan-20-15. 25Satuan tempat-15-15. 25 Tempat persepuluhan-15. 3 Untuk menerapkan strategi “membulatkan setengah dari nol” pada angka 1, Anda mulai seperti biasa dengan menggeser titik desimal ke kanan sejumlah tempat tertentu. Kemudian Anda melihat digit 4 tepat di sebelah kanan tempat desimal di nomor baru ini. Pada titik ini, ada empat kasus yang perlu dipertimbangkan
Setelah membulatkan menurut salah satu dari empat aturan di atas, Anda kemudian menggeser tempat desimal kembali ke kiri Diberi nomor 1 dan nilai untuk 54, Anda dapat mengimplementasikannya di Python dengan menggunakan 68 dan 20 6Itu cukup mudah, tetapi sebenarnya ada cara yang lebih sederhana Jika Anda pertama kali mengambil nilai absolut _1 menggunakan fungsi bawaan Python, Anda bisa menggunakan 68 untuk membulatkan angka. Maka yang perlu Anda lakukan adalah memberikan tanda yang sama pada angka yang dibulatkan dengan 1. Salah satu cara untuk melakukannya adalah dengan menggunakan fungsi 48 mengambil dua angka 50 dan 51 dan mengembalikan 50 dengan tanda 51>>> ________50______7 Perhatikan bahwa _48 mengembalikan 14, meskipun kedua argumennya bilangan bulatMenggunakan _45, 68 dan 48, Anda dapat menerapkan strategi "pembulatan setengah dari nol" hanya dalam dua baris Python 8Di _59, nilai absolut dari 1 dibulatkan menjadi 54 tempat desimal menggunakan 68 dan hasil ini diberikan ke variabel 63. Kemudian tanda asli dari 1 diterapkan ke 63 menggunakan 48, dan nilai akhir ini dengan tanda yang benar dikembalikan oleh fungsiMemeriksa _59 pada beberapa nilai yang berbeda menunjukkan bahwa fungsi berperilaku seperti yang diharapkan>>> 9Fungsi _59 membulatkan angka seperti kebanyakan orang cenderung membulatkan angka dalam kehidupan sehari-hari. Selain menjadi fungsi pembulatan paling umum yang pernah Anda lihat sejauh ini, 59 juga menghilangkan bias pembulatan dengan baik dalam kumpulan data yang memiliki jumlah ikatan positif dan negatif yang samaMari kita periksa seberapa baik _59 mengurangi bias pembulatan pada contoh dari bagian sebelumnya>>> 0Nilai rata-rata angka di _28 dipertahankan hampir persis saat Anda membulatkan setiap angka di 28 ke satu tempat desimal dengan 59Namun, _59 akan menunjukkan bias pembulatan saat Anda membulatkan setiap angka dalam kumpulan data dengan hanya ikatan positif, hanya ikatan negatif, atau lebih banyak ikatan dari satu tanda daripada yang lain. Bias hanya dimitigasi dengan baik jika ada jumlah ikatan positif dan negatif yang sama dalam kumpulan dataBagaimana Anda menangani situasi di mana jumlah ikatan positif dan negatif sangat berbeda? . Fungsi bawaan Python Hilangkan iklanPembulatan Setengah Hingga GenapSalah satu cara untuk mengurangi bias pembulatan saat membulatkan nilai dalam kumpulan data adalah dengan membulatkan ikatan ke bilangan genap terdekat pada presisi yang diinginkan. Berikut beberapa contoh cara melakukannya NilaiPutaran Separuh Hingga Genap Hingga Hasil15. 255Tempat Puluhan2015. 255 Tempat seseorang1515. 255 Tempat persepuluhan15. 315. 255 Tempat keseratus15. 26 The "rounding half to even strategy" adalah strategi yang digunakan oleh fungsi 9 bawaan Python dan merupakan. Strategi ini bekerja berdasarkan asumsi bahwa probabilitas seri dalam kumpulan data yang dibulatkan ke bawah atau ke atas adalah sama. Dalam praktiknya, ini biasanya terjadiSekarang Anda tahu mengapa 04 mengembalikan 01. Itu bukan kesalahan. Ini adalah keputusan desain sadar berdasarkan rekomendasi yang solidUntuk membuktikan kepada diri sendiri bahwa _9 benar-benar membulatkan ke genap, cobalah pada beberapa nilai yang berbeda>>> 1Fungsi 9 hampir bebas dari bias, tetapi tidak sempurna. Misalnya, bias pembulatan masih dapat terjadi jika sebagian besar ikatan dalam kumpulan data Anda dibulatkan ke atas, bukan dibulatkan ke bawah. Strategi yang mengurangi bias bahkan lebih baik daripada “membulatkan setengah ke genap”, tetapi agak tidak jelas dan hanya diperlukan dalam keadaan ekstrimAkhirnya, _9 menderita cegukan yang sama seperti yang Anda lihat di 68 berkat kesalahan representasi titik-mengambang>>> 2Anda tidak perlu khawatir dengan kesalahan sesekali ini jika presisi floating-point sudah cukup untuk aplikasi Anda Ketika presisi adalah yang terpenting, Anda harus menggunakan kelas 11 PythonKelas >>> actual_value, truncated_value = 100, 100 _11Modul desimal Python adalah salah satu fitur "termasuk baterai" dari bahasa yang mungkin tidak Anda sadari jika Anda baru mengenal Python. Prinsip panduan modul _12 dapat ditemukan di dokumentasi
Manfaat modul _12 meliputi
Mari jelajahi cara kerja pembulatan dalam modul 12. Mulailah dengan mengetik yang berikut ke dalam Python REPL>>> 3 96 mengembalikan objek 97 yang mewakili konteks default modul 12. Konteksnya mencakup presisi default dan strategi pembulatan default, antara lainSeperti yang Anda lihat pada contoh di atas, strategi pembulatan default untuk modul 12 adalah 00. Ini sejalan dengan fungsi 9 bawaan dan harus menjadi strategi pembulatan yang lebih disukai untuk sebagian besar tujuanMari mendeklarasikan angka menggunakan kelas _12 modul 11. Untuk melakukannya, buat instance _11 baru dengan meneruskan 05 yang berisi nilai yang diinginkan>>> 4Catatan. Dimungkinkan untuk membuat instance _11 dari angka floating-point, tetapi hal itu menyebabkan kesalahan representasi floating-point langsung dari kelelawar. Misalnya, lihat apa yang terjadi saat Anda membuat instance 11 dari angka floating-point 03>>> 5Untuk mempertahankan presisi yang tepat, Anda harus membuat 11 contoh dari string yang berisi angka desimal yang Anda butuhkanHanya untuk bersenang-senang, mari kita uji pernyataan bahwa 11 mempertahankan representasi desimal yang tepat>>> 6Ahhh. Itu memuaskan, bukan? Membulatkan _11 dilakukan dengan metode 12>>> 7Oke, itu mungkin terlihat sedikit funky, jadi mari kita uraikan. Argumen _13 di 12 menentukan jumlah tempat desimal untuk membulatkan angka. Karena _15 memiliki satu tempat desimal, angka 16 dibulatkan menjadi satu tempat desimal. Strategi pembulatan default adalah “membulatkan setengah ke genap”, sehingga hasilnya adalah 4Ingatlah bahwa fungsi _9, yang juga menggunakan strategi "pembulatan setengah ke genap", gagal membulatkan 19 menjadi dua tempat desimal dengan benar. Alih-alih 20, 21 mengembalikan 22. Berkat _12 modul representasi desimal yang tepat, Anda tidak akan mengalami masalah ini dengan kelas 11>>> ________57______8 Manfaat lain dari modul 12 adalah pembulatan setelah melakukan aritmatika dilakukan secara otomatis, dan angka signifikan dipertahankan. Untuk melihat ini dalam tindakan, mari ubah presisi default dari dua puluh delapan digit menjadi dua, lalu tambahkan angka 43 dan 27>>> 9Untuk mengubah presisi, Anda memanggil _96 dan menyetel atribut 29. Jika menyetel atribut pada panggilan fungsi terlihat aneh bagi Anda, Anda dapat melakukan ini karena 30 mengembalikan objek 97 khusus yang mewakili konteks internal saat ini yang berisi parameter default yang digunakan oleh modul 12Nilai pasti dari 43 ditambah 27 adalah 35. Karena ketepatannya sekarang adalah dua digit, dan strategi pembulatan diatur ke default "pembulatan setengah ke genap", nilai 35 secara otomatis dibulatkan menjadi 37Untuk mengubah strategi pembulatan default, Anda dapat menyetel properti 38 ke salah satu dari beberapa. Tabel berikut meringkas tanda-tanda ini dan strategi pembulatan mana yang diterapkanTandai Strategi Pembulatan 39Membulatkan ke atas 40Membulatkan ke bawah________57______41Pemangkasan 42Membulatkan dari nol 43Membulatkan setengah dari nol 44Membulatkan setengah menuju nol________57______45Membulatkan_5657_____membulatkan ke nol______45Hal pertama yang perlu diperhatikan adalah bahwa skema penamaan yang digunakan oleh modul 12 berbeda dari apa yang telah kita sepakati sebelumnya di artikel. Misalnya, 42 menerapkan strategi "pembulatan jauh dari nol", yang sebenarnya membulatkan angka negatif ke bawahKedua, beberapa strategi pembulatan yang disebutkan dalam tabel mungkin terlihat asing karena kita belum membahasnya. Anda telah melihat cara kerja _45, jadi mari kita lihat masing-masing cara kerjanyaStrategi _39 bekerja seperti fungsi 74 yang kita definisikan sebelumnya>>> 0Perhatikan bahwa hasil dari _39 tidak simetris di sekitar nolStrategi _40 bekerja seperti fungsi 03 kita>>> 1Seperti _39, strategi ________57______40 tidak simetris di sekitar nolStrategi _41 dan 42 memiliki nama yang agak menipu. Baik _59 dan 60 simetris di sekitar nol>>> 2Strategi _41 membulatkan angka menuju nol, seperti fungsi 08. Di sisi lain, _42 membulatkan semuanya dari nol. Ini adalah jeda yang jelas dari terminologi yang kami sepakati sebelumnya dalam artikel ini, jadi ingatlah itu saat Anda bekerja dengan modul 12Ada tiga strategi dalam modul _12 yang memungkinkan pembulatan yang lebih bernuansa. Metode _43 membulatkan semuanya ke angka terdekat dan memutus ikatan dengan membulatkan dari nol>>> 3Perhatikan bahwa 43 berfungsi seperti 59 kita dan tidak seperti 68Ada juga strategi _44 yang memutuskan ikatan dengan pembulatan ke nol>>> 4Strategi pembulatan terakhir yang tersedia dalam modul 12 sangat berbeda dari apa pun yang telah kita lihat sejauh ini>>> 5Dalam contoh di atas, sepertinya ________57______46 membulatkan semuanya menuju nol. Faktanya, inilah cara kerja _46, kecuali jika hasil pembulatan berakhir dengan 25 atau 61. Dalam hal ini, angka dibulatkan dari nol>>> 6Pada contoh pertama, angka _76 pertama dibulatkan ke arah nol di tempat desimal kedua, menghasilkan 77. Karena _77 tidak diakhiri dengan 25 atau 61, maka dibiarkan apa adanya. Di sisi lain, _81 dibulatkan ke nol di tempat desimal kedua, menghasilkan angka 8. Ini diakhiri dengan _61, jadi tempat desimal pertama kemudian dibulatkan dari nol menjadi 4Pada bagian ini, kita hanya berfokus pada aspek pembulatan modul 12. Ada sejumlah besar fitur lain yang membuat 12 pilihan yang sangat baik untuk aplikasi di mana presisi floating-point standar tidak memadai, seperti perbankan dan beberapa masalah dalam komputasi ilmiahUntuk informasi lebih lanjut tentang _11, lihat di dalam dokumen PythonSelanjutnya, mari kita alihkan perhatian kita ke dua pokok tumpukan komputasi ilmiah dan ilmu data Python. NumPy dan Panda Hilangkan iklanMembulatkan Array NumPyDalam domain ilmu data dan komputasi ilmiah, Anda sering menyimpan data Anda sebagai NumPy 88. Salah satu fitur NumPy yang paling kuat adalah penggunaan vektorisasi dan penyiaran untuk menerapkan operasi ke seluruh larik sekaligus, bukan satu elemen dalam satu waktu.Mari kita hasilkan beberapa data dengan membuat array 3x4 NumPy dari angka acak semu >>> ________79______7 Pertama, kita seed modul _89 sehingga Anda dapat mereproduksi hasilnya dengan mudah. Kemudian array 3×4 NumPy angka floating-point dibuat dengan 90Catatan. Anda harus _91 sebelum mengetik kode di atas ke dalam REPL Anda jika Anda belum memiliki NumPy di lingkungan Anda. Jika Anda menginstal Python dengan Anaconda, Anda sudah siapJika Anda belum pernah menggunakan NumPy sebelumnya, Anda bisa mendapatkan pengantar cepat di bagian Look Ma Brad Solomon, No For-Loops. Pemrograman Array Dengan NumPy di sini di Real Python Untuk informasi lebih lanjut tentang modul acak NumPy, lihat bagian Brad Menghasilkan Data Acak dengan Python (Panduan) Untuk membulatkan semua nilai dalam larik _28, Anda dapat meneruskan 28 sebagai argumen ke fungsi. Jumlah tempat desimal yang diinginkan ditetapkan dengan argumen kata kunci 54. Strategi setengah putaran ke genap digunakan, seperti fungsi 9 bawaan PythonMisalnya, berikut ini membulatkan semua nilai dalam 28 menjadi tiga tempat desimal>>> ________79______8 _94 bergantung pada kesalahan representasi titik-mengambang, seperti halnya 9Misalnya, nilai di baris ketiga dari kolom pertama di 28 array adalah 01. Ketika Anda membulatkannya ke tiga tempat desimal menggunakan strategi "membulatkan setengah ke genap", Anda mengharapkan nilainya menjadi 02. Tapi Anda bisa melihat di output dari 94 bahwa nilainya dibulatkan menjadi 04. Namun, nilai 05 di baris pertama kolom kedua dibulatkan dengan benar menjadi 06Jika Anda perlu membulatkan data dalam array Anda menjadi bilangan bulat, NumPy menawarkan beberapa opsi
Fungsi _11 membulatkan setiap nilai dalam larik ke bilangan bulat terdekat yang lebih besar atau sama dengan nilai aslinya>>> 9Hei, kami menemukan nomor baru. Nol negatif Sebenarnya, standar IEEE-754 mensyaratkan penerapan nol positif dan negatif. Apa kemungkinan gunanya untuk hal seperti ini?
Untuk membulatkan setiap nilai ke bilangan bulat terdekat, gunakan 13>>> 0Anda juga dapat memotong setiap nilai menjadi komponen bilangan bulatnya dengan 14>>> 1Terakhir, untuk membulatkan ke bilangan bulat terdekat menggunakan strategi “membulatkan setengah ke genap”, gunakan 15>>> 2Anda mungkin telah memperhatikan bahwa banyak strategi pembulatan yang telah kita bahas sebelumnya hilang di sini. Untuk sebagian besar situasi, fungsi ________79______16 adalah semua yang Anda butuhkan. Jika Anda perlu menerapkan strategi lain, seperti 68, Anda dapat melakukannya dengan modifikasi sederhana _3Berkat operasi vektorisasi NumPy, ini berfungsi seperti yang Anda harapkan >>> 4Sekarang setelah Anda adalah master pembulatan NumPy, mari kita lihat kelas berat ilmu data Python lainnya. perpustakaan panda Hilangkan iklanMembulatkan Panda >>> random.seed(100) >>> actual_value, rounded_value = 100, 100 >>> for _ in range(1000000): .. randn = random.uniform(-0.05, 0.05) .. actual_value = actual_value + randn .. rounded_value = round(rounded_value + randn, 3) ... >>> actual_value 96.45273913513529 >>> rounded_value 96.258 18 dan >>> random.seed(100) >>> actual_value, rounded_value = 100, 100 >>> for _ in range(1000000): .. randn = random.uniform(-0.05, 0.05) .. actual_value = actual_value + randn .. rounded_value = round(rounded_value + randn, 3) ... >>> actual_value 96.45273913513529 >>> rounded_value 96.258 19Pustaka Panda telah menjadi bahan pokok bagi ilmuwan data dan analis data yang bekerja dengan Python. Dalam kata-kata Joe Wyndham dari Real Python
Catatan. Sebelum Anda melanjutkan, Anda harus 20 jika Anda belum memilikinya di lingkungan Anda. Seperti halnya NumPy, jika Anda menginstal Python dengan Anaconda, Anda harus siap untuk pergiDua struktur data utama Panda adalah 19, yang dalam istilah yang sangat longgar berfungsi seperti spreadsheet Excel, dan 18, yang dapat Anda anggap sebagai kolom dalam spreadsheet. Kedua objek 18 dan 19 juga dapat dibulatkan secara efisien menggunakan metode 25 dan ________79______26>>> 5Metode _26 juga dapat menerima kamus atau 18, untuk menentukan presisi yang berbeda untuk setiap kolom. Misalnya, contoh berikut menunjukkan cara membulatkan kolom pertama dari 29 ke satu tempat desimal, kolom kedua ke dua, dan kolom ketiga ke tiga tempat desimal>>> 6Jika Anda membutuhkan lebih banyak fleksibilitas pembulatan, Anda dapat menerapkan fungsi 02, 55, dan 32 NumPy ke objek Pandas 18 dan 19>>> 7Fungsi _68 yang dimodifikasi dari bagian sebelumnya juga akan berfungsi di sini>>> 8Selamat, Anda sedang menuju penguasaan yang sempurna. Anda sekarang tahu bahwa ada lebih banyak cara untuk membulatkan angka daripada kombinasi taco. (Yah… mungkin tidak. ) Anda dapat menerapkan banyak strategi pembulatan dengan Python murni, dan Anda telah mempertajam keterampilan Anda dalam membulatkan array NumPy dan Panda 18 dan 19 objekTinggal satu langkah lagi. mengetahui kapan menerapkan strategi yang tepat Aplikasi dan Praktik TerbaikPeregangan terakhir di jalan Anda menuju keahlian pembulatan adalah memahami kapan harus menerapkan pengetahuan yang baru Anda temukan. Di bagian ini, Anda akan mempelajari beberapa praktik terbaik untuk memastikan Anda membulatkan angka dengan benar Simpan Lebih Banyak dan Putaran TerlambatSaat Anda berurusan dengan kumpulan data yang besar, penyimpanan bisa menjadi masalah. Di sebagian besar database relasional, setiap kolom dalam tabel dirancang untuk menyimpan tipe data tertentu, dan tipe data numerik sering kali diberi presisi untuk membantu menghemat memori. Misalnya, sensor suhu dapat melaporkan suhu dalam oven industri yang sudah lama beroperasi setiap sepuluh detik dengan akurat hingga delapan desimal. Pembacaan dari ini digunakan untuk mendeteksi fluktuasi suhu yang tidak normal yang dapat mengindikasikan kegagalan elemen pemanas atau beberapa komponen lainnya. Jadi, mungkin ada skrip Python yang berjalan yang membandingkan setiap pembacaan yang masuk dengan yang terakhir untuk memeriksa fluktuasi yang besar Pembacaan dari sensor ini juga disimpan dalam database SQL sehingga suhu rata-rata harian di dalam oven dapat dihitung setiap hari pada tengah malam. Pabrikan elemen pemanas di dalam oven merekomendasikan untuk mengganti komponen setiap kali suhu rata-rata harian turun 38 derajat di bawah normalUntuk perhitungan ini, Anda hanya memerlukan ketepatan tiga angka desimal. Tapi Anda tahu dari kejadian di Bursa Efek Vancouver bahwa menghapus terlalu banyak presisi dapat mempengaruhi perhitungan Anda secara drastis Jika Anda memiliki ruang yang tersedia, Anda harus menyimpan data dengan presisi penuh. Jika penyimpanan menjadi masalah, aturan praktis yang baik adalah menyimpan setidaknya dua atau tiga tempat desimal presisi lebih dari yang Anda perlukan untuk perhitungan Anda Terakhir, saat Anda menghitung suhu rata-rata harian, Anda harus menghitungnya dengan ketelitian penuh yang tersedia dan membulatkan jawaban akhir Hilangkan iklanPatuhi Peraturan Mata Uang LokalKetika Anda memesan secangkir kopi seharga $2. 40 di kedai kopi, pedagang biasanya menambahkan pajak yang diwajibkan. Jumlah pajak itu sangat bergantung pada lokasi Anda secara geografis, tetapi demi argumen, katakanlah 6%. Pajak yang akan ditambahkan keluar menjadi $0. 144. Haruskah Anda membulatkannya menjadi $0. 15 atau turun ke $0. 14? Situasi seperti ini juga bisa muncul saat Anda mengonversi satu mata uang ke mata uang lainnya. Pada tahun 1999, Komisi Eropa untuk Urusan Ekonomi dan Keuangan mengkodifikasikan penggunaan strategi "pembulatan setengah menjauh dari nol" saat mengonversi mata uang ke Euro, tetapi mata uang lain mungkin mengadopsi peraturan yang berbeda. Skenario lain, "pembulatan Swedia", terjadi ketika unit mata uang minimum pada tingkat akuntansi di suatu negara lebih kecil dari unit mata uang fisik terendah. Misalnya, jika secangkir kopi berharga $2. 54 setelah pajak, tetapi tidak ada koin 1 sen yang beredar, apa yang Anda lakukan? Bagaimana situasi seperti ini ditangani biasanya ditentukan oleh pemerintah suatu negara. Anda dapat menemukan daftar metode pembulatan yang digunakan oleh berbagai negara di Wikipedia Jika Anda merancang perangkat lunak untuk menghitung mata uang, Anda harus selalu memeriksa undang-undang dan peraturan setempat di lokasi pengguna Anda Jika Ragu-ragu, Bulatkan Ikatan Menjadi GenapSaat Anda membulatkan angka dalam kumpulan data besar yang digunakan dalam perhitungan kompleks, perhatian utama adalah membatasi pertumbuhan kesalahan karena pembulatan Dari semua metode yang telah kita bahas dalam artikel ini, strategi "pembulatan setengah ke genap" paling baik meminimalkan bias pembulatan. Untungnya, Python, NumPy, dan Panda semuanya default untuk strategi ini, jadi dengan menggunakan fungsi pembulatan bawaan Anda sudah terlindungi dengan baik RingkasanWah. Perjalanan yang luar biasa ini Di artikel ini, Anda mempelajarinya
Ikuti Kuis. Uji pengetahuan Anda dengan kuis "Angka Pembulatan dengan Python" interaktif kami. Setelah selesai Anda akan menerima skor sehingga Anda dapat melacak kemajuan belajar Anda dari waktu ke waktu Ikuti Kuis » Jika Anda tertarik untuk mempelajari lebih lanjut dan menggali seluk-beluk detail dari semua yang telah kami bahas, tautan di bawah ini akan membuat Anda sibuk cukup lama Paling tidak, jika Anda menikmati artikel ini dan mempelajari sesuatu yang baru darinya, teruskan ke teman atau anggota tim. Pastikan untuk berbagi pemikiran Anda dengan kami di komentar. Kami ingin mendengar beberapa cerita pertempuran Anda yang berhubungan dengan pembulatan Selamat Pythoning Sumber daya tambahanStrategi pembulatan dan bias
Spesifikasi floating-point dan desimal
Bacaan Menarik
Tandai sebagai Selesai 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang David Amos David adalah seorang penulis, pemrogram, dan ahli matematika yang bersemangat menjelajahi matematika melalui kode » Lebih lanjut tentang DaudSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Adriana Geir Arne Joanna Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Apakah 0. 0 sama dengan 0 di Python?Ketika int dan float dibandingkan, integer diubah menjadi float dan kemudian dibandingkan. Jadi, tidak ada perbedaan saat membandingkan 0. 0 dan 0 .
Apa. 0f artinya dengan Python?Ringkasan. Pada artikel ini, kita berbicara tentang formatter %f dengan Python. Anda menggunakannya untuk memformat angka floating point . Bergantung pada parameter yang disediakan, pemformat %f membulatkan nilai float ke desimal terdekat yang disediakan.
Bagaimana Anda mengonversi 0 menjadi float dengan Python?Untuk mengonversi integer menjadi float dengan Python, kita dapat menggunakan fungsi bawaan float() atau konversi implisit .
Bagaimana. 2f bekerja dengan Python?Format dari. 2f (perhatikan f ) berarti menampilkan angka dengan dua digit setelah titik desimal . Jadi angka 1 akan ditampilkan sebagai 1. 00 dan angka 1. 5555 akan ditampilkan sebagai 1. 56.
Bagaimana Anda mendapatkan tempat desimal nol dengan Python?Gunakan kelas int() untuk mendapatkan angka tanpa desimal , e. g. hasil = int(float_saya). Kelas int() memotong angka titik-mengambang menuju nol, sehingga akan mengembalikan int yang mewakili angka tanpa tempat desimal. Disalin. |