@Goretex
Taa… podobnie…
To weźmy np C:
printf("%d\n", 89.9);
wypisze losową liczbę np 1511585816 (gcc / clang; amd64; linux).
W tym przypadku wiąże się to z faktem, że argumenty zmiennoprzecinkowe są odkładane w innych rejestrach procesora, niż te całkowite i funkcja czyta śmieci z nie tych rejestrów co powinna.
I w ten sposób
printf("%d\n", 89.9, 5);
zawsze wypisze 5 (gdyż 5 to pierwszy argument całkowity).
@Goretex Nie jest to błąd, a ostrzeżenie - kod się skompiluje.
I tak - jeśli rzutujesz na int przed przekazaniem, to wszystko zadziała.
Tak samo zadziała, jeśli funkcja ma zdefiniowane typy parametrów. A printf nie ma (nie licząc pierwszego).
Za odpowiednik tego w php można uznać intval, który w tym przypadku nie jest konieczny.
No i takie zachowanie C to bardziej upierdliwość, niż feature.
@AGATAXA A dlaczego tak uważasz ? Uważam, że pochopnie wyciągasz. Bardzo wiele sondaży (a zwłaszcza te na Demotywatorach) jest takiego rodzaju, że żadna odpowiedź nie pasuje - więc "nie mam zdania" jest niebraniem udziału w sondażu na Demotywatorach. Tym razem akurat tak się złożyło, że pytania są odpowiednie do ustosunkowania się do nich, więc mogłam odpowiedzieć. Owe "nie mam zdania" oznacza zwykle, że osoba się nie interesuje danym tematem, albo jej zdanie nie pasuje do żadnej z odpowiedzi.
@katem Uważam że jak ktoś nic nie wie na dany temat, albo jest mu wszystko jedno, albo mu odpowiedzi nie pasują -to nie powinien brać udziału w głosowaniu. Bo jego głos nic nie wnosi.
A poza tym masz trochę racji, w sondażach powinna być rubryka : inne, z możliwością wpisania swojej najlepszej odpowiedzi. Tylko kto by to czytał...
Brawo za wychwycenie! Jezu.. przerażające...ta strona staje się coraz bardziej żałosna. Jeśli nie popełniłem błędu w obliczeniach brakuje tutaj około 80 głosów o ile jakiekolwiek liczby które tutaj widzimy są rzetelne. Żałosne.
OdpowiedzKomentuj obrazkiem
Zmodyfikowano
1 raz.
Ostatnia modyfikacja:
7 lutego 2024 o 21:56
Bardziej przeraża mnie to 9% ludzi. Za dużo Republiki?
@Cammax Albo dla zartu
@aisin mam nadzieję. Choć patrząc czasem po komentarzach tutaj, to boję się, że oni tak na serio. A gdyby to był FB, to tym bardziej.
Najbardziej prawdopodobne jest, że wyniki zostały zaokrąglone w dół z dokładnością do 1%.
@Ochrety
89,5 + 5,5 + 4,5 = 99,5
Nadal brakuje, a bardziej się nie da naciągnąć
Zmodyfikowano 2 razy. Ostatnia modyfikacja: 7 lutego 2024 o 20:47
@AGATAXA zaokrąglenie w dół, a właściwie floor, działa tak, że zostawia tylko część całkowitą
przykładowo
89,9 ~ 89
5,9 ~ 5
4,2 ~ 4
@Goretex
ok, możliwe. Nie wiem, gdzie tak się liczy, może przy remanentach ? ale w księgowości tak by to nie przeszło :)
@AGATAXA "Nie wiem, gdzie tak się liczy"
To nie kwestia liczenia, a wyświetlania wyniku na stronie
Podany poniżej kod wyświetli 89
echo sprintf("%d", 89.9);
https://onlinephp.io/?s=s7EvyCjg5UpNzshXKC4oyswrSdNQUk1R0lGwsNSz1LQGAA%2C%2C&v=8.2.13
Przykład z PHP ale w wielu językach programowania działa to podobnie
@AGATAXA
Być może w kodzie ktoś użył formułkę do liczby całkowitej z lenistwa. Być może jest jakaś inna przyczyna.
Zaokrąglanie w dół używa się kiedy chcesz mieć pewność, że nie przekroczy się górnego limitu.
Przykładowo gdybyś była w windzie, w której obliczono że średnio może wejść 4.8 osób, to nikt nie chce żeby tam się znalazło 5 osób i limit będzie 4.
Zmodyfikowano 2 razy. Ostatnia modyfikacja: 7 lutego 2024 o 22:56
@Goretex
Taa… podobnie…
To weźmy np C:
printf("%d\n", 89.9);
wypisze losową liczbę np 1511585816 (gcc / clang; amd64; linux).
W tym przypadku wiąże się to z faktem, że argumenty zmiennoprzecinkowe są odkładane w innych rejestrach procesora, niż te całkowite i funkcja czyta śmieci z nie tych rejestrów co powinna.
I w ten sposób
printf("%d\n", 89.9, 5);
zawsze wypisze 5 (gdyż 5 to pierwszy argument całkowity).
Także no… trzeba z tym uważać xD
@Sok__Jablkowy 4,8 osób w windzie działa na wyobraźnię :D
@pawel24pl chyba nie do końca
printf("%d\n", 89.9); wypisze komunikat o błędzie
main.c:13:14: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’
Ale już
printf("%d\n", (int)89.9);
wypisze 89
https://onlinegdb.com/9ZrtF4Euk
@Goretex Nie jest to błąd, a ostrzeżenie - kod się skompiluje.
I tak - jeśli rzutujesz na int przed przekazaniem, to wszystko zadziała.
Tak samo zadziała, jeśli funkcja ma zdefiniowane typy parametrów. A printf nie ma (nie licząc pierwszego).
Za odpowiednik tego w php można uznać intval, który w tym przypadku nie jest konieczny.
No i takie zachowanie C to bardziej upierdliwość, niż feature.
@Goretex brawo ;)
w więzieniu
2% powiedziało nie wiem/nie mam zdania/nie wypowiem się.
Niema za co.
Zostało na nożu.
Te 2% wybrało najgłupszą odpowiedź wszystkich sondaży czyli " nie mam zdania"
@AGATAXA A dlaczego tak uważasz ? Uważam, że pochopnie wyciągasz. Bardzo wiele sondaży (a zwłaszcza te na Demotywatorach) jest takiego rodzaju, że żadna odpowiedź nie pasuje - więc "nie mam zdania" jest niebraniem udziału w sondażu na Demotywatorach. Tym razem akurat tak się złożyło, że pytania są odpowiednie do ustosunkowania się do nich, więc mogłam odpowiedzieć. Owe "nie mam zdania" oznacza zwykle, że osoba się nie interesuje danym tematem, albo jej zdanie nie pasuje do żadnej z odpowiedzi.
@katem Uważam że jak ktoś nic nie wie na dany temat, albo jest mu wszystko jedno, albo mu odpowiedzi nie pasują -to nie powinien brać udziału w głosowaniu. Bo jego głos nic nie wnosi.
A poza tym masz trochę racji, w sondażach powinna być rubryka : inne, z możliwością wpisania swojej najlepszej odpowiedzi. Tylko kto by to czytał...
Brawo za wychwycenie! Jezu.. przerażające...ta strona staje się coraz bardziej żałosna. Jeśli nie popełniłem błędu w obliczeniach brakuje tutaj około 80 głosów o ile jakiekolwiek liczby które tutaj widzimy są rzetelne. Żałosne.
Zmodyfikowano 1 raz. Ostatnia modyfikacja: 7 lutego 2024 o 21:56
procenty masz zaokrąglane do całości. Jeżeli stosują zaokrąglenie "w dół" to łączny błąd może być "prawie" 3 punkty procentowe.
np.: 89,7 + 5,74 + 4,36
mnie zastanawia kto w dzisiejszych czasach wierzy w takie sondarze
Te zaginione procenty poszły po prostu na wódkę!