![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 234 Pomógł: 1 Dołączył: 29.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy może mi ktoś podpowiedzieć, czemu nie mogę pobrać wartości pola typu float ... rekord jest w bazie
Jeśli zrobię to zadziała, ale chodzi mi o to wyżej... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Wcale nie żart Groooomie... Część osób zapisuje float nie jako float czy double w bazie, ale właśnie varchar. Stąd ten wtręt o nim. Co do float to zastanów się nad ewentualnym przejściem na double, który ma większą precyzję. Sam z floatem miałem ten problem i choć double nie rozwiązał problemu, to go zmniejszył do sensownych wartości. Zależy wszystko od tego czy operacje będą wykonywane w bazie czy w php. Osobiście bym się skłaniał przy:
a) jeśli robisz obliczenia w bazie na polach => double (IMG:style_emoticons/default/cool.gif) baza tylko przechowuje dane dla operacji w php => varchar Czemu? Bo przechowywanie wartości jako ciąg znakowy zachowa jego formę w takiej postaci jak chcesz, bez strat związanych z zaokrąglaniem. Ma to jednak tylko sens dla przechowywania niewielkiej ilości danych i na dłuższą metę spowodować może spadek wydajności. Wybór więc jest tak naprawdę między mniejszym lub większym złem. Problemu by nie było, gdyby liczby mogły zapisywać dane w systemie dziesiętnym. Ale działają w binarnym (choć są pewne ruskie działające w trójkowym, ale to tylko ciekawostka bez znaczenia) i dlatego zawsze będzie problem. @Thunder: down Z tym Groooomem to żart słowny z nicka. Thunder to wszak piorun, grzmot, grom. A że masz przeciągnięcie na 'u' to ja przeciągnąłem na 'o' i tak z Thuuuunder zrobił się Grooom (IMG:style_emoticons/default/winksmiley.jpg) A co do float to nie wiedzieć czemu, ma on bardzo małą dokładność w Mysql. Powinien mieć aż do 24 miejsc po przecinku teoretycznie (tyle można mu nakazać definiując typ), co zresztą jest opisane w manualu, ale widocznie ma jakąś znacznie niższą domyślną wartość parametru precyzji. Zbyt niską do typowych obliczeń. Z tego co przed chwilą zerknąłem do manuala, można jednak definiując typ kolumny nakazać by float miał określoną precyzję, do 53 miejsca włącznie. Ten post edytował thek 5.11.2009, 16:07:29 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 10:19 |