Menyimpan data statistik, apakah saya perlu DESIMAL, FLOAT atau DOUBLE?

Saya membuat untuk bersenang-senang, tapi aku masih ingin mendekati serius, sebuah situs yang host berbagai tes. Dengan tes ini saya berharap untuk mengumpulkan data statistik.

Beberapa data yang akan mencakup persentase kelengkapan tes karena mereka adalah waktunya. Saya dapat dengan mudah menghitung persentase tes tapi saya ingin benar data yang akan dikembalikan seperti yang saya menyimpan berbagai nilai-nilai yang berbeda tentang tes pada penyelesaian.

Sebagian besar nilai-nilai, di PHP mengapung, jadi pertanyaan saya adalah, jika saya ingin benar data statistik harus saya simpan di MYSQL seperti FLOAT, DOUBLE atau DESIMAL.

Saya ingin memanfaatkan MYSQL'S fungsi seperti AVG() dan LOG10() serta TRUNCATE(). Untuk MYSQL untuk mengembalikan data yang benar berdasarkan nilai-nilai saya yang saya masukkan, apa yang harus saya gunakan sebagai database kolom pilihan.

Saya bertanya karena beberapa angka yang mungkin atau mungkin tidak akan mengapung seperti, 10, 10.89, 99.09, atau hanya 0. Tapi saya ingin benar dan valid statistik data yang akan dikembalikan.

Saya bisa mengandalkan floating point matematika untuk ini?

EDIT

Saya tahu ini adalah sebuah pertanyaan generik, dan saya meminta maaf secara luas, namun untuk non hebat matematika seperti saya, juga saya bukan MYSQL ahli, saya ingin pendapat dari seorang ahli di bidang ini.

Saya telah melakukan penelitian tapi saya masih merasa saya memiliki mendung penilaian pada masalah ini. Sekali lagi saya minta maaf jika pertanyaan saya adalah off topic atau tidak cocok untuk situs ini.

Larutan

Ini link melakukan pekerjaan yang baik untuk menjelaskan apa yang anda cari. Berikut adalah apa yang dikatakan:

Semua tiga Jenis, dapat ditentukan oleh Parameter berikut (ukuran, d). Di mana ukuran adalah ukuran total dari String, dan d merupakan presisi. E. g Untuk menyimpan Nomor seperti 1234.567, anda akan mengatur tipe Data DOUBLE(7, 3) di mana 7 adalah jumlah digit dan 3 adalah jumlah digit untuk mengikuti titik desimal.

FLOAT dan DOUBLE, kedua mewakili angka floating point. PELAMPUNG adalah untuk single-precision, sementara GANDA adalah untuk nomor presisi ganda. Presisi dari 0 sampai 23 hasil dalam 4-byte single-precision FLOAT kolom. Presisi dari 24 53 hasil dalam 8-byte double-presisi GANDA kolom. FLOAT adalah akurat untuk sekitar 7 desimal, dan GANDA upto 14.

Desimal deklarasi dan fungsi yang mirip dengan Ganda. Tapi ada satu perbedaan besar antara nilai-nilai floating point dan desimal (angka) nilai-nilai. Kita menggunakan tipe data DESIMAL ke toko yang tepat nilai-nilai numerik, dimana kita tidak ingin presisi tetapi tepat dan akurat nilai-nilai. Desimal jenis dapat menyimpan Maksimum 65 Digit, dengan 30 angka setelah titik desimal.

Jadi, untuk yang paling akurat dan tepat, nilai Desimal akan menjadi pilihan terbaik.

Komentar (7)

Kecuali anda menyimpan data desimal (yaitu mata uang), anda harus menggunakan standar floating point tipe (FLOAT atau DOUBLE). DESIMAL adalah tipe fixed point, sehingga dapat meluap ketika menghitung hal-hal seperti JUMLAH, dan akan sangat tidak akurat untuk LOG10.

Tidak ada "kurang tepat" tentang biner floating point tipe, pada kenyataannya, mereka akan jauh lebih akurat (dan lebih cepat) untuk kebutuhan anda. Pergi dengan berlipat GANDA.

Komentar (5)

Sederhananya, Float dan double yang tidak tepat sebagai desimal. desimal dianjurkan untuk uang terkait jumlah input.(mata uang dan gaji). Hal lain yang perlu diperhatikan adalah: Jangan membandingkan angka pecahan menggunakan "=","<>", karena float angka-angka yang tidak tepat.

Komentar (0)

Desimal : Tipe Titik Tetap (Tepat Nilai). Gunakan ini ketika anda peduli tentang tepat presisi seperti uang.

Contoh: gaji DESIMAL(8,2), 8 adalah jumlah digit, 2 adalah jumlah tempat desimal.gajiakan berada di kisaran-999999.99untuk999999.99`


Float, Double : Floating-Point Jenis (**Perkiraan Nilai). Float menggunakan 4 byte untuk mewakili nilai, menggunakan Double 8 byte untuk mewakili nilai.

Contoh: persentase FLOAT(5,2), sama seperti jenis desimal, 5 total angka dan 2 tempat desimal. persentase akan menyimpan nilai-nilai antara -999.99 untuk 999.99.

Perhatikan bahwa mereka ** perkiraan nilai, dalam hal ini:

  • Nilai seperti 1 / 3.0 = 0.3333333... akan disimpan sebagai 0.33 (2 tempat desimal)
  • Nilai seperti 33.009 akan disimpan sebagai 33.01 (pembulatan 2 desimal)
Komentar (0)

Berlama-lama: website yang anda sebutkan dan kutipan memiliki beberapa IMO tidak tepat info yang membuat saya bingung. Dalam dokumen yang saya baca bahwa ketika anda mendeklarasikan float atau double, titik desimal pada kenyataannya TIDAK termasuk dalam jumlah. Jadi itu bukan jumlah karakter dalam sebuah string tapi semua digit yang digunakan.

Bandingkan docs: "PRESISI GANDA(M,D). di Sini, "(M,D)" berarti dari nilai-nilai yang dapat disimpan sampai dengan M digit di total, yang D digit mungkin setelah titik desimal. Misalnya, kolom didefinisikan sebagai FLOAT(7,4) akan terlihat seperti -999.9999 ketika ditampilkan" http://dev.mysql.com/doc/refman/5.1/en/floating-point-types.html

Juga nomenklatur di menyesatkan - acc untuk docs: M 'presisi' dan D 'skala', sedangkan website membutuhkan 'skala' untuk 'presisi'.

Pikir itu akan berguna dalam kasus sb seperti saya sedang berusaha untuk mendapatkan sebuah gambar. Benar saya jika saya'm salah, harap saya belum't baca beberapa usang docs:)

Komentar (0)

Float dan Double adalah Floating point tipe data, yang berarti bahwa angka-angka yang mereka dapat tepat sampai jumlah tertentu dari digit saja. Misalnya untuk tabel dengan kolom tipe float jika anda menyimpan 7.6543219 itu akan disimpan sebagai 7.65432. Demikian pula Double tipe data mendekati nilai tetapi memiliki lebih presisi dari Mengapung.

Ketika membuat sebuah tabel dengan kolom Decimal tipe data, anda dapat menentukan jumlah digit dan jumlah digit sesudah desimal ke toko, dan jika nomor yang anda simpan dalam kisaran yang anda tentukan itu akan disimpan dengan tepat.

Jika anda ingin menyimpan nilai-nilai yang tepat, Decimal adalah cara untuk pergi, itu adalah apa yang dikenal sebagai fixed tipe data.

Komentar (0)