Mengapa angka floating point sering digunakan dalam Sains / Teknik?

33

Saat menyelidiki keakuratan angka floating point, saya pernah melihat di beberapa tempat pernyataan yang mirip

" float dan double adalah ( dirancang untuk / sering digunakan dalam ) perhitungan teknik dan ilmiah "

Dari pemahaman saya, kekuatan float dan double adalah jumlah memori yang mereka gunakan untuk presisi (baik, tetapi tidak sempurna) mereka.

Saya merasa hampir mendapatkan pemahaman dari jawaban ini

"angka floating point memungkinkan Anda memodelkan jumlah kontinu"

Saya masih tidak yakin saya mengerti. Teknik dan Sains keduanya terdengar seperti bidang di mana Anda ingin hasil yang tepat dari perhitungan Anda, yang, dari pemahaman saya, poin mengambang tidak memberikan. Saya juga tidak yakin mengikuti apa yang disebut "kuantitas terus menerus" itu.

Adakah yang bisa memperluas penjelasan ini dan mungkin memberi contoh?

DoubleDouble
sumber
2
Lihat floating-point-gui.de
Basile Starynkevitch
47
Engineering and Science both sound like fields where you would want precise results from your calculations, which, from my understanding, floating points do not give.Baik dalam Sains dan Teknik, Anda hanya peduli pada ketepatan sampai titik tertentu. Menggunakan presisi tak terbatas untuk setiap perhitungan seringkali tidak perlu mahal. Yang membedakan floating point dari titik tetap adalah Anda tidak harus berkomitmen pada sejumlah tempat desimal - Anda dapat memiliki jumlah yang sangat kecil dengan banyak tempat desimal atau jumlah yang sangat besar dengan presisi terbatas.
Doval
24
Untuk menambah poin yang dibuat di atas, Anda tidak hanya tidak peduli tentang ketepatan di luar titik tertentu, Anda tidak bisa mendapatkan hasil yang tepat secara sewenang-wenang karena banyak input Anda diukur jumlah yang memiliki beberapa kesalahan bawaan.
2
Ini juga menunjukkan bahwa itu bukan karena kesalahan pembulatan akan terus menumpuk. Itu tergantung pada apa yang Anda lakukan dan bagaimana Anda melakukannya; ada seluruh bidang yang didedikasikan untuk itu.
Doval
10
Floating point bukan "presisi acak", kesalahan untuk berbagai operasi dapat diprediksi dan terkenal, dan kesalahan untuk suatu algoritma dapat diselesaikan. Jika mereka cukup rendah (dan khususnya jika kesalahan mundur Anda lebih kecil dari ketidakpastian dalam variabel input Anda) maka Anda dapat yakin bahwa hasil Anda baik (atau setidaknya bahwa masalah dengan mereka tidak disebabkan oleh floating- titik kesalahan).
hobbs

Jawaban:

77

Komputasi dalam sains dan teknik membutuhkan pengorbanan dalam presisi, jangkauan, dan kecepatan. Aritmatika titik tetap memberikan presisi, dan kecepatan yang layak, tetapi mengorbankan rentang. BigNum, pustaka presisi sewenang-wenang, menang dalam jangkauan dan presisi, tetapi kalah kecepatan.

Inti dari masalah ini adalah bahwa sebagian besar perhitungan ilmiah dan teknik membutuhkan kecepatan tinggi, dan jangkauan yang sangat besar, tetapi memiliki kebutuhan presisi yang relatif sederhana. Konstanta fisik yang paling baik ditentukan hanya diketahui sekitar 13 digit, dan banyak nilai diketahui dengan jauh lebih sedikit kepastian. Memiliki lebih dari 13 digit presisi di komputer tidak akan membantu itu. Lalat di salep adalah bahwa urutan operasi floating point secara bertahap dapat kehilangan presisi. Roti dan mentega dari analisis numerik mencari tahu masalah mana yang paling rentan terhadap hal ini, dan mencari tahu cara pintar menata ulang urutan operasi untuk mengurangi masalah.

Pengecualian untuk ini adalah teori bilangan dalam matematika yang perlu melakukan operasi aritmatika pada angka dengan jutaan digit tetapi dengan ketepatan absolut. Para ahli teori angka numerik sering menggunakan perpustakaan BigNum, dan mereka bertahan dengan perhitungan mereka yang memakan waktu lama.

Charles E. Grant
sumber
2
Jawaban yang bagus. Sementara fungsi yang mendasari mungkin terus menerus sempurna, yang akan membutuhkan ketepatan sempurna untuk memodelkan secara tepat, kenyataannya adalah bahwa segala sesuatu dalam sains dan teknik adalah perkiraan. Kami lebih suka memiliki perkiraan yang layak dan berguna dan mencapai sesuatu dari ketelitian tak terbatas, yang untuknya kami akan menunggu selamanya untuk menyelesaikan banyak operasi.
Jonathan Eunice
4
@JonathanEunice Anda tidak dapat benar-benar menggambarkan kenyataan. Input untuk model berasal dari pengukuran dan Anda mungkin tidak akan pernah dapat mengukur hal-hal dengan tepat sehingga bilangan real asli di komputer / perangkat lunak modern (pada saat itu) akan membatasi itu. Dengan kata lain, Anda dapat memiliki model, perangkat lunak, atau matematika yang sempurna, itu tidak masalah. Misalnya Hitung volume kotak. a*b*chal-hal mudah, namun Anda perlu mengukur dimensi yang tidak dapat Anda lakukan dengan kepastian absolut, sehingga Anda tidak benar-benar membutuhkan ketepatan perhitungan yang tak terbatas, hanya cukup untuk diikat oleh kesalahan pengukuran.
Luk32
2
@ luk32 Kami sangat setuju tentang sebagian besar poin itu. Seseorang dapat memodelkan sesuatu dengan tepat (volume bola, misalnya), tetapi tidak pernah dapat mengukur dengan tepat. Dan kenyataan tidak pernah cocok dengan model yang sempurna. Lebih baik mendapatkan nilai / model yang sedikit tidak tepat dan bermanfaat daripada menunggu pengukuran atau perhitungan yang sempurna - sesuatu yang akan selalu selangkah lagi.
Jonathan Eunice
2
"Inti masalahnya adalah bahwa sebagian besar perhitungan ilmiah dan rekayasa membutuhkan kecepatan tinggi, dan jangkauan yang sangat besar" Jika saya memberi Anda waktu yang lama, Anda masih tidak dapat menghitung dengan tepat karena algoritma untuk menghitung secara tepat tidak diketahui secara luas. Dan pertama-tama, kita bahkan tidak bisa mewakili angka dengan tepat. Ini hanya masalah yang kita tidak tahu bagaimana menyelesaikannya, tidak cepat atau lambat.
Michael Le Barbier Grünewald
@ MichaelGrünewald, kami tidak dapat mewakili bilangan real secara tepat, tetapi kami dapat menyelesaikan masalah dengan perkiraan yang cukup dekat sehingga kami dapat membangun struktur setinggi beberapa ribu kaki, mengidentifikasi gen dalam DNA, dan bertemu satelit dengan komet setelah dua tahun di ruang hampa. Mengutip Randy Newman, itu mungkin tidak tepat, tetapi tidak apa-apa. Bahkan kita dapat mewakili rasional dengan tepat menggunakan perpustakaan presisi arbitrer (tunduk pada keterbatasan memori).
Charles E. Grant
30

Apa alternatif yang Anda usulkan?

Kuantitas kontinu direpresentasikan menggunakan bilangan real dalam matematika. Tidak ada tipe data yang dapat menyandikan setiap bilangan real yang mungkin (karena real tidak terhitung), jadi itu artinya kita hanya dapat memilih subset dari bilangan real yang paling menarik bagi kita.

  • Anda dapat memilih semua real yang dapat dihitung, yang mirip dengan apa yang dilakukan sistem aljabar komputer (CAS). Masalahnya adalah bahwa itu menjadi tidak mungkin dengan cepat ketika pohon ekspresi Anda tumbuh semakin besar. Ini juga sangat lambat: cobalah memecahkan sistem persamaan diferensial besar dalam Mathematica secara simbolis dan bandingkan dengan beberapa implementasi berbasis floating-point lainnya dan Anda akan melihat perbedaan dramatis dalam kecepatan. Selain itu, seperti yang ditunjukkan Jörg W Mittag dan kasperd: Anda bahkan tidak memiliki operasi kesetaraan / perbandingan yang layak.

  • Anda dapat menggunakan angka rasional yang tepat, tetapi itu tidak benar-benar berfungsi untuk banyak aplikasi karena Anda perlu menghitung akar kuadrat atau cosinus atau logaritma dll. Selain itu, ada juga kecenderungan rasional menjadi semakin kompleks dan karenanya membutuhkan lebih banyak ruang untuk menyimpan dan waktu untuk memproses saat Anda melakukan lebih banyak perhitungan pada mereka.

  • Anda juga bisa menggunakan desimal presisi sewenang-wenang, tetapi bahkan sesuatu yang sesederhana pembagian tidak akan berhasil karena Anda mendapatkan digit berulang berulang. Anda juga dapat mengalami masalah meningkatnya kompleksitas saat Anda melakukan lebih mirip dengan bilangan rasional, meskipun pada tingkat yang lebih rendah.

Jadi, Anda akan dipaksa untuk menggunakan perkiraan di beberapa titik, dalam hal ini tepatnya di mana angka floating-point melakukan yang terbaik. Angka floating-point juga memiliki lebar tetap (tidak seperti ketiga tipe data lainnya yang disebutkan sebelumnya), yang mencegah peningkatan kompleksitas saat Anda melakukan lebih banyak dan lebih banyak perhitungan pada mereka.

Rufflewind
sumber
1
Salah satu jawaban terbaik, saya mengabaikannya sebelum menulis milik saya.
Michael Le Barbier Grünewald
8
Plus, ada fakta yang sedikit tidak nyaman sehingga Anda bahkan tidak bisa mengatakan apakah dua real yang dapat dihitung sama.
Jörg W Mittag
1
Tidakkah menggunakan semua real yang dapat dihitung mengalami masalah dengan perbandingan? Saya cukup yakin Anda tidak dapat membandingkan real computable yang sewenang-wenang tanpa menyelesaikan masalah penghentian.
kasperd
@kasperd: Saya pikir itu akan tergantung dalam beberapa ukuran pada operasi apa yang diizinkan untuk digunakan dalam perhitungan, meskipun saya tidak yakin seberapa kaya satu set tipe komputasi yang dapat dimiliki dan masih menjamin bahwa dua hasil sewenang-wenang yang dapat diproduksi dalam jumlah terbatas operasi dapat dibandingkan dalam batas waktu. Tipe aljabar hampir pasti memenuhi kriteria itu, tetapi saya tidak tahu apakah fungsi ln (x) dan exp (x) dapat ditambahkan dan masih memenuhi kriteria itu.
supercat
Anda dapat mendukung aritmatika presisi sewenang-wenang (tambah, gandakan, kurangi, bagi), irasional (seperti √2), transendental yang terkenal (seperti Pi dan e), fungsi trigonometri, dll. Menggunakan fraksi lanjutan. Lihat algoritma Gosper di HAKMEM. Setelah selesai, Anda dapat melakukan evaluasi malas untuk mendapatkan perkiraan floating point ke presisi yang diinginkan.
Paul Chernoch
14

Proposisi Anda tentang sains salah, Teknik dan Sains selain Matematika tidak bekerja dengan hasil yang tepat. Mereka bekerja dengan faktor presisi yang dibangun ke dalam berapa banyak angka yang Anda tunjukkan.

Istilah kunci yang perlu Anda pahami di sini adalah: angka signifikan . Angka-angka penting dari angka adalah angka-angka yang membawa makna berkontribusi pada ketepatannya.

Yang pada dasarnya berarti jika saya menyatakan bahwa ada sesuatu yang panjangnya 12 sentimeter, itu sebenarnya bisa berada di antara panjang 11,5 dan 12,5 sentimeter. Namun jika saya menyatakan bahwa sesuatu memiliki panjang 12,00 sentimeter, panjangnya bisa antara 11.995 dan 12.005 sentimeter.

Sama seperti ilustrasi, jika Anda mengambil pita pengukur dan mengukur ruang tamu Anda. Meskipun Anda mungkin menemukan bahwa itu 6 meter 25 sentimeter, Anda tahu bahwa pengukuran kaset Anda tidak cukup akurat untuk mengatakan apa pun tentang akurasi milimeter atau akurasi nano meter.

Pieter B
sumber
@leftaroundtentang apa maksudmu matematika (seperti dalam matematika) bukan sains? Dalam buku saya itu.
Pieter B
2
@PieterB: Matematika bukan Sains. Itu adalah Filsafat. Ilmu pengetahuan adalah tindakan membentuk pemahaman tentang dunia fisik kita. Filsafat adalah tindakan memahami bagaimana ide bekerja di dunia yang ideal.
Slebetman
Saya pikir sains biasanya lebih suka bekerja dengan rentang kepercayaan eksplisit daripada angka signifikan.
Taemyr
@slebetman Selain itu tidak ada hubungannya dengan poin saya di posting saya, jika matematika adalah sains atau tidak, saya tidak dapat tidak memberikan kutipan: Alam adalah matematika bawaan, dan dia berbicara kepada kami dalam matematika. Kami hanya harus mendengarkan. Karena alam adalah matematika, ilmu apa pun yang bermaksud menggambarkan alam sepenuhnya bergantung pada matematika. Tidak mungkin untuk terlalu menekankan hal ini, dan itulah sebabnya Carl Friedrich Gauss menyebut matematika "ratu ilmu."
Pieter B
Kutipan itu berasal dari sini . Bacaan yang bagus dan banyak untuk dibicarakan, tetapi tidak di sini karena memang tidak ada hubungannya dengan posting Anda atau pertanyaan ini.
leftaroundabout
7

Perhatikan bahwa angka floating point pada dasarnya sama dengan notasi ilmiah dan teknik , cara standar bagi manusia untuk menulis angka dalam matematika dan sains. Dalam bidang-bidang ini, tidak ada kebutuhan besar untuk ketepatan yang ekstrem, tetapi sering kali ada kisaran yang sangat besar .

Untuk mengambil contoh acak dari pekerjaan rumah fisika saya, saya baru-baru ini harus bekerja dengan massa elektron, yang kira-kira 9,11 * 10 ^ -31 kg. Saya tidak terlalu peduli dengan presisi; bisa dengan mudah menjadi 9,12 untuk semua yang saya pedulikan. Tapi saya peduli dengan eksponen dan tidak mau harus menulis 0,0000 ... 911 kg, jadi saya menggunakan notasi ilmiah.

Alasan yang sama berlaku dalam komputasi ilmiah dan teknik: ada banyak sekali, tetapi kami tidak ingin harus menyimpan dan bekerja dengan jumlah yang sangat besar, jadi kami menyimpan nilai yang dinormalisasi dan eksponen, yang lebih kecil dan lebih cepat untuk bekerja dengannya.

raptortech97
sumber
6

Angka floating-point juga memiliki beberapa properti yang cocok untuk menghitung jenis hasil ilmiah tertentu. Paling khusus, presisi berbanding terbalik dengan besarnya, sama seperti dalam notasi ilmiah, sehingga Anda dapat mewakili baik perbedaan kecil mendekati nol dan perbedaan besar jauh lebih jauh.

Makalah Goldberg mungkin merupakan analisis yang paling terkenal tentang sifat-sifat angka floating-point (dan harus dibaca jika Anda peduli tentang hal semacam ini), tetapi makalah Kahan saya pikir melakukan pekerjaan yang lebih baik untuk menjelaskan alasan di balik banyak hal yang halus. masalah desain.

Secara khusus, kecaman Kahan tentang implementasi Java dari floating point , walaupun cukup menyakitkan, membuat beberapa poin bagus tentang mengapa semantik IEEE-754 berguna, dan Banyak Ado About Nothing's Sign Bit mengeksplorasi alasan untuk menandatangani nol secara mendalam.

Daniel Pryden
sumber
Saya belum membaca seluruh makalah Kahan, tapi dia tampaknya lebih sopan daripada saya. Java bisa saja memiliki angka yang lebih berguna dan berkinerja lebih cepat daripada yang sebenarnya jika ia menambahkan realjenis yang akan membawa tiga entri tumpukan untuk disimpan, dan akan mewakili presisi komputasi alami mesin; nilai dapat disimpan sebagai pelampung 80-bit + 16 bit yang melapisi pelampung 64-bit + 32 bit, atau mantissa 64 bit, eksponen 16 bit, dan 16 bit untuk tanda dan bendera [untuk implementasi non-FPU].
supercat
Tentukan itu floatdan doublemerupakan format penyimpanan, dan realmerupakan format komputasi. Dalam banyak sistem tanpa FPU, bekerja dengan mantra, eksponen, dan bendera yang berada di batas kata dan setengah kata akan lebih cepat daripada harus membongkar dan mengemas ganda dengan setiap operasi.
supercat
2

TL; DR Kami tidak tahu cara menghitung sebagian besar fungsi dengan presisi sempurna, oleh karena itu tidak ada titik yang mewakili angka dengan presisi sempurna.

Semua jawaban sejauh ini kehilangan poin terpenting: kita tidak dapat menghitung nilai pasti dari sebagian besar angka. Sebagai kasus khusus yang penting, kami tidak dapat menghitung nilai pasti dari fungsi eksponensial - untuk hanya mengutip fungsi irasional yang paling penting.

Jawaban naif untuk pertanyaan naif

Tampaknya pertanyaan Anda agak "ada perpustakaan aritmatika yang tepat, mengapa kita tidak menggunakannya di tempat aritmatika floating point?" Jawabannya adalah bahwa aritmatika yang tepat bekerja pada bilangan rasional dan bahwa:

  • Nomor Archimede - nama besar π - tidak rasional.
  • Banyak konstanta penting lainnya tidak rasional.
  • Banyak konstanta penting lainnya bahkan tidak diketahui rasional atau tidak.
  • Untuk setiap bilangan rasional nol-nol x bilangan exp (x) tidak rasional.
  • Pernyataan serupa berlaku untuk radikal, logaritma, dan banyak fungsi yang penting bagi para ilmuwan (distribusi Gauss, CDF-nya, fungsi Bessel, fungsi Euler, ...).

Angka rasionalnya adalah kecelakaan yang beruntung. Sebagian besar angka tidak rasional (lihat teorema Baire) sehingga menghitung angka akan selalu membawa kita keluar dari dunia rasional.

Apa itu komputasi dan mewakili angka?

Kita dapat bereaksi dengan mengatakan, “Baiklah, masalahnya adalah bilangan rasional bukanlah pilihan yang tepat untuk mewakili bilangan real.” Kemudian kami menggulung garpu sleave kami, Debian, dan menyusun sistem representasi baru untuk bilangan real.

Jika kita ingin menghitung angka, kita harus memilih sistem representasi untuk bilangan real dan menggambarkan operasi penting pada mereka - yaitu mendefinisikan apa arti komputasi . Karena kami tertarik pada komputasi ilmiah, kami ingin merepresentasikan secara akurat semua angka desimal (ukuran kami), kueriennya (angka rasional), nilai fungsi eksponensial, dan beberapa konstanta lucu, seperti angka Archimede.

Masalahnya adalah bahwa satu-satunya cara untuk secara sempurna mewakili angka dalam sistem semacam itu adalah dengan menggunakan bentuk simbolis, yaitu, tidak menghitung apa pun dan bekerja dengan ekspresi aljabar. Ini adalah representasi bilangan real yang agak lumpuh, karena kita tidak dapat secara andal membandingkan dua angka (mana yang lebih besar)? Kita bahkan tidak bisa dengan mudah menjawab pertanyaan "Apakah angka yang diberikan sama dengan 0?".

Jika Anda mencari definisi dan masalah matematika yang lebih tepat, cari bilangan rasional, bilangan transendental, perkiraan terbaik, dan teorema Baire, misalnya.

Michael Le Barbier Grünewald
sumber
Saya pikir ini adalah jawaban yang bagus, hanya saja tidak untuk pertanyaan ini, sejauh saya tidak yakin bahwa penanya akan memahami poin yang Anda buat. Itu dan Anda menjadi cukup fasih dengan representasi nomor \ Real atau \ Complex yang tidak eksak oleh representasi digital terbatas (terlepas dari lebar bit dinamis atau statis). Itu semua sepenuhnya benar, tetapi di samping itu. Pujian untuk tidak sekutu robot yang mengutip Goldberg. :) Dan teorema Baire bukan bagian dari retorika yang biasa ditemukan pada Programmer atau StackOverflow.
mctylr
0

Karena

1) Para penulis membuat asumsi bahwa "perhitungan rekayasa dan ilmiah" mengukur kuantitas fisik dunia nyata

2) Jumlah fisik kontinu, dan persis seperti yang Anda sebutkan "angka floating point memungkinkan Anda memodelkan jumlah kontinu"

.. dan sisa jawaban saya disimpulkan dengan baik oleh Rufflewind , jadi saya tidak akan mengulanginya di sini.

Jan Doggen
sumber
0

Angka floating point memberikan akurasi relatif: mereka dapat mewakili angka yang paling banyak persentase kecil (jika Anda ingin memanggil sesuatu seperti 0,0000000000001% persentase) jauh dari angka akurat melalui berbagai angka. Mereka berbagi sifat ini dengan aturan slide, meskipun yang terakhir tidak mendapatkan yang lebih baik daripada sekitar 3 digit akurasi. Namun, itu cukup memadai untuk mengetahui kekuatan statis dan dinamis dari struktur besar sebelum komputer digital menjadi hal biasa untuk itu, dan itu karena konstanta material juga menunjukkan beberapa variasi, dan memilih konstruksi yang cukup jinak terhadap material dan perbedaan konstruksi akan cenderung untuk membuat muatan maksimum dan titik lemah dapat diidentifikasi secara wajar.

Sekarang "akurasi" adalah fitur yang berguna untuk banyak angka yang mewakili pengukuran dan / atau besaran sifat fisik.

Tidak semua dalam sains / teknik termasuk dalam kategori itu. Misalnya, jika Anda menggunakan transformasi teoretik bilangan untuk mengalikan bilangan besar atau bidang Galois untuk memanipulasi polinomial koreksi kesalahan, tidak ada yang namanya kesalahan kecil: kesalahan bit apa pun selama pemrosesan akan menghasilkan hasil yang sangat sulit dibedakan dari acak sepenuhnya. kebisingan.

Bahkan di daerah-daerah tersebut seseorang dapat bekerja dengan angka floating point (seperti menggunakan FFT kompleks untuk melakukan konvolusi) jika seseorang melacak akumulasi kesalahan dan memastikan bahwa kesalahan floating point tidak mengakumulasi besaran yang cukup untuk bahkan mungkin membalik sedikit pun dalam entitas aktual yang merupakan perkiraan. Untuk perkiraan seperti itu, pemrosesan titik tetap kemungkinan akan lebih tepat tetapi unit floating point di lapangan cenderung memberikan operasi yang lebih cepat dan sejumlah besar bit yang dapat digunakan.

Juga bahasa pemrograman seperti C atau Fortran membuatnya sangat sulit untuk mengakses operasi dasar seperti multiplikasi dan pembagian presisi campuran atau carry bit untuk penambahan / pengurangan, dan itu adalah blok bangunan dasar untuk melampaui bilangan bulat presisi terbatas.

Jadi, jika Anda dapat memetakan operasi ke angka floating point, Anda cenderung memiliki perangkat keras yang cukup kuat saat ini dan Anda dapat menentukan algoritma Anda dengan baik di salah satu bahasa pemrograman tujuan umum saat ini.

pengguna153796
sumber
0

Saya pikir ini bisa dijawab dengan membahas jenis aplikasi float/ doubledata apa yang tidak cocok.

Ketika Anda perlu memastikan bahwa Anda dapat mewakili angka secara akurat dengan jumlah digit tertentu, maka angka floating point tidak tepat, karena angka tersebut mewakili angka sebagai kekuatan 2, bukan kekuatan 10, seperti cara kami mewakili angka dalam dunia nyata.

Jadi satu domain di mana tipe data floating point tidak boleh digunakan adalah keuangan *. Untuk sistem inti misalnya bank, akan sama sekali tidak dapat diterima jika jumlah yang seharusnya $ 100000,01 tiba-tiba menjadi $ 100000,00 atau $ 100000,02.

Masalah seperti itu dapat dengan mudah terjadi ketika menggunakan pelampung, terutama jika jumlahnya adalah hasil dari satu atau lebih perhitungan, misalnya menghitung jumlah semua transaksi dalam suatu akun.

Teknik dan perhitungan ilmiah adalah domain tempat kesalahan pembulatan yang relatif kecil ini dapat diterima. Pengguna biasanya menyadari bahwa semua angka memiliki presisi terbatas, dan mereka sering bekerja dengan sejumlah digit signifikan . Tetapi yang paling penting mereka memiliki presisi relatif yang terdefinisi dengan baik, yaitu mereka telah memberikan jumlah digit signifikan yang sama, baik untuk jumlah yang sangat besar, dan untuk jumlah yang sangat kecil.

* Saya pernah bekerja pada aplikasi keuangan floatdi mana s telah digunakan untuk mewakili nilai, dan sebagai akibatnya, kesalahan pembulatan diperkenalkan. Untungnya, bug khusus ini sama sekali tidak kritis, pengguna mengeluhkan kesalahan perhitungan dalam program. Dan ini menyebabkan efek yang berbeda, jauh lebih buruk: pengguna mulai kehilangan kepercayaan pada sistem.

Pete
sumber