Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zaokrąglanie sumy liczb do 100%
Ryder
post 1.12.2011, 12:21:10
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Witam


Jak zamienić wszystkie liczy ze zbioru na procenty, tak aby wartość zawsze równała się 100% a nie 99,99, 100,05%, itp.

Załóżmy mamy

Liczby 2,5,8 = 15

Zamieniamy na procenty
Dla liczby 2 mamy round(((2 * 100) / 15), 1) = 13,33 = 13,3
Dla liczby 5 mamy round(((5 * 100) / 15), 1) = 33,33 = 33,3
Dla liczby 2 mamy round(((8 * 100) / 15), 1) = 53,33 = 53,3


Łacznie daje 13,3 + 33,3 + 53,3 = 99,6

Jak zrobić, żeby wartości składowe dawały zawsze wartość po zsumowaniu 100,
czyli np: 13,4 + 33,4 + 53,2
Go to the top of the page
+Quote Post
nospor
post 1.12.2011, 12:22:29
Post #2





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Ostatnią wartosc masz wyliczać tak:
100 - suma_procentów_pozostałych_wartosci
Wtedy nie bedziesz mial problemów.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 1.12.2011, 12:32:26
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ewentualnie pozostałą wartość (100 - suma pozostałych) po równo rozdzielasz do wszystkich wyników by uniknąć sporego przekłamania rzędu 0,4%. Oczywiście to tworzy dokładnie ten sam problem (0,4 może nie dać się ładnie rozłożyć), wtedy już resztę z reszty możesz dopisać do ostatniego wyniku - nie powinna to już być zbyt duża wartość.
Go to the top of the page
+Quote Post
Uriziel01
post 1.12.2011, 13:07:24
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Najlepszym rozwiązaniem było by operowanie na większej dokładności tych liczb. Ale jeżeli nie masz takiej możliwości (dlaczego?) no to od 100 odejmij ostateczna sumę wyników, podziel to na ilość wartości dla których to liczysz i rozłóż równomiernie.

@Crozin-Kurcze, przepraszam ale nie przeczytałem Twojej wypowiedzi. Porponujemy dokładnie takie samo rozwiązanie smile.gif

Ten post edytował Uriziel01 1.12.2011, 13:12:05
Go to the top of the page
+Quote Post
Ryder
post 1.12.2011, 13:13:39
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Dzięki za pomoc,

Zrobiłem w ten sposób, że zanim obliczam procenty robię sortowanie na tabli z liczbami od najmniejszej do największej.
Następnie zamieniam wszystkie wartości na procenty oprócz ostatniej. Dla ostatniej odejmuje 100% - suma poprzednich.
Dla największej wartości powinno być najmniejsze przekłamanie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.04.2025 - 08:23