![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
chcę stworzyć w bazie danych tabelę z rabatami (w procentach) dla poszczególnych użytkowników. Zastanawiam się jakiego typu pola najlepiej użyć. Pomysły:
Dwa pierwsze pomysły są bardzo podobne, ale zastanawia mnie czy użycie float jest w pełni bezpieczne dla dokładności obliczeń, bo jak wiemy z tymi zmiennoprzecinkowymi wartościami różnie bywa. Czy to ma jednak jakiekolwiek znaczenie dla wyniku o tak małej dokładności, jaką jest kwota pieniężna (zaledwie 2 znaki po przecinku)? Drugi pomysł, czyli decimal, to bardziej pewny format - zawsze go używam do zapisywania kwot pieniężnych. Trzeci pomysł to już inna bajka, ale kusi mnie "pewność" takich danych. Liczba całkowita to jednak liczba całkowita, a i dane czytelniejsze i zajmują mniej (1 bajt). Wadą jest to, że trzeba dołożyć operację dzielenia w każdym zapytaniu, co jest trochę upierdliwe. W praktyce pewnie i tak to napiszę obiektowo, więc to nie będzie wielki problem, no ale podebatować można (IMG:style_emoticons/default/smile.gif) Jak Wy to widzicie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@nospor
Z decimalem chyba głupoty nie wyskakują, bo on jest zupełnie inaczej przetwarzany niż floaty. @kayman Czytelność danych w bazie mnie nie interesuje, nie będę czytał sobie bazy przed snem (IMG:style_emoticons/default/tongue.gif) Matematyka jest upierdliwa o tyle, że jak będę liczył w stu miejscach cenę, to będę musiał wszędzie dodawać ten dzielnik. Chociaż tak jak mówiłem, najprawdopodobniej zrobię metodę do obliczania cen, która będzie wykonywała dodatkowe mnożenie przez rabat jako dodatkowe zapytanie. Nie odważę się dodawać rabatu do każdego zapytania osobno (bo wydajność, ble ble), bo zbyt łatwo o tym zapomnieć. @pyton Dlaczego łatwiej operować tinyintem niż decimalem w tym przypadku? Rozwijam dyskusję, chociaż wbrew pozorom nie mam ciśnienia na decimal. Na tym etapie mogę jedynie powiedzieć, że float przegrywa z kretesem (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 12:34 |