Probabil, fiecare dezvoltator se confruntă mai devreme sau mai târziu, problema aruncă numere în virgulă mobilă. Esența acestor probleme este faptul că numărul de adăugat sau comparat, rezultatul în acest caz este greșit, dând impresia că undeva o eroare în codul. O greșeală nu este în codul și tipul de date selectat. Aici voi discuta despre diferitele tipuri de date pentru a stoca numere fractionare în MySQL.
Folosit pentru stocarea plutitoare numere de puncte (numere reale). Numărul scris în SQL-interogare nu este neapărat aceeași cu cea stocată în baza de date. De aceea, trebuie să fim pregătiți pentru problemele cu proba, comparând, adăugarea și găsirea unor astfel de numere. Faptul că flotor stochează valoarea aproximativă. Aproximativ, 2.5 + 2.5 nu va fi exact egală cu 5, astfel încât operațiunea va avea loc în cadrul serverului cu privire la modul în care 2.500001 + 2.499999, în general, sensul este clar.
Principiul este același cu cel al flotorului, gama largă de numere stocate: float în depozit este alocat 4 octeți de la Double - 8 octeți. Asta este, în loc de a folosi flotorului dublu, nu poate scăpa de eroare, deși acesta va apărea mult mai puțin frecvent (datorită unei game mai largi de valori posibile)
Zecimal și Numeric
Aceste tipuri de ajutor pentru a evita problemele cu stocarea și regăsirea. Ei stoca valoarea exactă, de exemplu, atunci când este vorba de numărul de 2,5, și va fi stocat, căutat, adăugați / scade cu precizie și garantate. Aceste tipuri de date sunt concepute special pentru a stoca date contabile, cum ar fi prețurile, salariile, solduri de cont, etc. Desigur, astfel de lucruri sunt erori inacceptabile, astfel încât aceste tipuri ar trebui să fie utilizate în cazul în care face de multe ori operațiile aritmetice sau logice exacte.
Desigur, natura lucrurilor descrise mult mai dificil. Nu am scopul de a scrie un Talmud imens, și a încercat să explice totul limbaj scurt și simplu.