Discuss Scratch

barbaramateja
Scratcher
28 posts

Problemy i Pytania

Brak wiadomości ze studii
Wiadomości ze studii przestały przychodzić.

Last edited by barbaramateja (Dec. 5, 2023 18:50:47)


╔══════════ ∘ ☆ ∘ ═══════════╗
☆Pozdrawiam/Regards, @barbaramateja
╚══════════ ∘ ☆ ∘ ═══════════╝
julianlukasiak
Scratcher
100+ posts

Problemy i Pytania

Jak zrobić podpis?


Support the suggestion HERE by adding this button to your signature

My social media:
Youtube
Snail ide
Planet Minecraft
another acount/inne konto
My turbowarp extensions gallery
Unixy-Code
Scratcher
500+ posts

Problemy i Pytania

julianlukasiak wrote:

Jak zrobić podpis?
https://scratch.mit.edu/discuss/settings/julianlukasiak/ - taki link na stronie głównej Discuss Scratch o nazwie Change your signature
AndrzejL1
Scratcher
100+ posts

Problemy i Pytania

Może znajdzie się tu ktoś kto podpowie mi, dlaczego program czasami generuje podczas zwykłego mnożenia
https://scratch.mit.edu/projects/967952893/
np.0.001 * 7 mnóstwo cyfr po przecinku?
Zdarza się to nieregularnie i na szybko to obsługuję komunikatem o błędzie działania Scratch.
Matematycznie powinno to być niemożliwe jak sądzę. Coś musi być nie tak z jakimiś klockami (zmienne, mnożenie, dodawanie)?

Last edited by AndrzejL1 (March 20, 2024 12:31:50)


say [Łatwiej zrobić projekt, niż wymyślić jak ma wyglądać podpis]
Opisek
Scratcher
1000+ posts

Problemy i Pytania

AndrzejL1 wrote:

Może znajdzie się tu ktoś kto podpowie mi, dlaczego program czasami generuje podczas zwykłego mnożenia
https://scratch.mit.edu/projects/967952893/
np.0.001 * 7 mnóstwo cyfr po przecinku?
Zdarza się to nieregularnie i na szybko to obsługuję komunikatem o błędzie działania Scratch.
Matematycznie powinno to być niemożliwe jak sądzę. Coś musi być nie tak z jakimiś klockami (zmienne, mnożenie, dodawanie)?

To nie jest bląd Scratcha, a ogólny limit komputerów!

W systemie decymalnym, czyli z cyframi 0,1,2,3,4,5,6,7,8,9 mamy problem dokładnego wypisania niektórych liczb. Na przykład, liczba ⅓ posiadałaby nieskończenie wiele cyfr po przecinku: 0.33333…

Komputer nie posiadają 10 cyfr, tylko dwie: 0 i 1. Nazawy się to system binarny. Tak samo jak w “naszym” człowieczym systemie, istnieją liczby których nie da się zapisać bez nieskończenie wiele cyfr po przecinku.

Przykładowo, liczba 0.1 w systemie binarnym to 0.0001100110011001100110011…, a liczba 0.2 to 0.00110011001100110…
Ale komputer ma tylko skończoną ilość pamięci! A więc gdy spróbujemy dodać 0.1 i 0.2 na komputerzy, to ten nie będzie mógł obliczyć dokładnego wyniku, ponieważ musiałby on liczyć nieskończenie długo, i jako rezultat dostaniemy 0.30000000004 - również jak spróbujesz to w Scratchu.

Podobny problem powstaje gdy próbujesz obliczyć 0.001 razy 7. Istnieją teź inne sposoby zapisywania liczb na kompturach (więc np. aplikacja kalkulatora będzie mogła obliczyć to równanie), ale większość programów zapisuje liczby z przecinkami w formacie IEEE 754, czyli “Floating Point Numbers”, które posiadają niestety ten właśnie opisany problem.
julmik6478
Scratcher
100+ posts

Problemy i Pytania

Opisek wrote:

AndrzejL1 wrote:

Może znajdzie się tu ktoś kto podpowie mi, dlaczego program czasami generuje podczas zwykłego mnożenia
https://scratch.mit.edu/projects/967952893/
np.0.001 * 7 mnóstwo cyfr po przecinku?
Zdarza się to nieregularnie i na szybko to obsługuję komunikatem o błędzie działania Scratch.
Matematycznie powinno to być niemożliwe jak sądzę. Coś musi być nie tak z jakimiś klockami (zmienne, mnożenie, dodawanie)?

To nie jest bląd Scratcha, a ogólny limit komputerów!

W systemie decymalnym, czyli z cyframi 0,1,2,3,4,5,6,7,8,9 mamy problem dokładnego wypisania niektórych liczb. Na przykład, liczba ⅓ posiadałaby nieskończenie wiele cyfr po przecinku: 0.33333…

Komputer nie posiadają 10 cyfr, tylko dwie: 0 i 1. Nazawy się to system binarny. Tak samo jak w “naszym” człowieczym systemie, istnieją liczby których nie da się zapisać bez nieskończenie wiele cyfr po przecinku.

Przykładowo, liczba 0.1 w systemie binarnym to 0.0001100110011001100110011…, a liczba 0.2 to 0.00110011001100110…
Ale komputer ma tylko skończoną ilość pamięci! A więc gdy spróbujemy dodać 0.1 i 0.2 na komputerzy, to ten nie będzie mógł obliczyć dokładnego wyniku, ponieważ musiałby on liczyć nieskończenie długo, i jako rezultat dostaniemy 0.30000000004 - również jak spróbujesz to w Scratchu.

Podobny problem powstaje gdy próbujesz obliczyć 0.001 razy 7. Istnieją teź inne sposoby zapisywania liczb na kompturach (więc np. aplikacja kalkulatora będzie mogła obliczyć to równanie), ale większość programów zapisuje liczby z przecinkami w formacie IEEE 754, czyli “Floating Point Numbers”, które posiadają niestety ten właśnie opisany problem.
Nie wiedziałem, że dopisek jest jeszcze aktywny.


Support the suggestion HERE by adding this button to your signature

My social media:
youtube
snail ide
planet minecraft
mcreator
electramod
julmik6478
Scratcher
100+ posts

Problemy i Pytania

Unixy-Code wrote:

nightman6565 wrote:

Nie chce obrażać pomysłu ale… sądzę że to trochę głupie robienie tych wszystkich tematów typu: Problemy i pytania. W sensie fajny pomysł ale gorsze wykonanie. Chodzi o to że nie zbyt pomagasz i ktoś inny to może zrobić lepiej. Dlatego jest sens robienia kolejnego tematu
kiedy kliknięto zieloną flagę
powiedz [Czy ktoś mi kiedyś powie dlaczego za każdym razem robię te skrypty?]
powtórz (21) razy
obróć w prawo o (37) stopni

end
Nie do końca Ciebie rozumiem. Temat problemy&pytania służy temu, aby po pierwsze zadawać małe pytania, które nie wymagają skomplikowanej pomocy- choćby czy coś się stanie gdy…

Po drugie. Problemy i pytania porządkują forum, aby nie powtarzać tych samych pytań. Wiele z nich znajduje się w #spis-poradnikow, gdzie znajdują się gotowe rozwiązania (wystarczy ctrl+f). Niestety na forum nie istnieje działająca wyszukiwarka, ale istnieje zewnętrzna jak ocular.

Nie rozumiem, co miałeś na myśli mówiąc:
Chodzi o to że nie zbyt pomagasz i ktoś inny to może zrobić lepiej
Jak nie pomagasz? Rozwiń swoje myśli.
Lub wyszukiwarka w pewnej scratchowej wtyczce do przeglądarki na a, której nazwy nie mogę napisać.


Support the suggestion HERE by adding this button to your signature

My social media:
youtube
snail ide
planet minecraft
mcreator
electramod
AndrzejL1
Scratcher
100+ posts

Problemy i Pytania

Opisek wrote:

AndrzejL1 wrote:

Może znajdzie się tu ktoś kto podpowie mi, dlaczego program czasami generuje podczas zwykłego mnożenia
https://scratch.mit.edu/projects/967952893/
np.0.001 * 7 mnóstwo cyfr po przecinku?
Zdarza się to nieregularnie i na szybko to obsługuję komunikatem o błędzie działania Scratch.
Matematycznie powinno to być niemożliwe jak sądzę. Coś musi być nie tak z jakimiś klockami (zmienne, mnożenie, dodawanie)?

To nie jest bląd Scratcha, a ogólny limit komputerów!

W systemie decymalnym, czyli z cyframi 0,1,2,3,4,5,6,7,8,9 mamy problem dokładnego wypisania niektórych liczb. Na przykład, liczba ⅓ posiadałaby nieskończenie wiele cyfr po przecinku: 0.33333…

Komputer nie posiadają 10 cyfr, tylko dwie: 0 i 1. Nazawy się to system binarny. Tak samo jak w “naszym” człowieczym systemie, istnieją liczby których nie da się zapisać bez nieskończenie wiele cyfr po przecinku.

Przykładowo, liczba 0.1 w systemie binarnym to 0.0001100110011001100110011…, a liczba 0.2 to 0.00110011001100110…
Ale komputer ma tylko skończoną ilość pamięci! A więc gdy spróbujemy dodać 0.1 i 0.2 na komputerzy, to ten nie będzie mógł obliczyć dokładnego wyniku, ponieważ musiałby on liczyć nieskończenie długo, i jako rezultat dostaniemy 0.30000000004 - również jak spróbujesz to w Scratchu.

Podobny problem powstaje gdy próbujesz obliczyć 0.001 razy 7. Istnieją teź inne sposoby zapisywania liczb na kompturach (więc np. aplikacja kalkulatora będzie mogła obliczyć to równanie), ale większość programów zapisuje liczby z przecinkami w formacie IEEE 754, czyli “Floating Point Numbers”, które posiadają niestety ten właśnie opisany problem.

Dzięki za odpowiedź. Zastanawiam się czy potraktować zatem te liczby w programie jako ciąg znaków, czy może da się jakoś obciąć wynik mnożenia do 3 cyfr po przecinku?

say [Łatwiej zrobić projekt, niż wymyślić jak ma wyglądać podpis]
Opisek
Scratcher
1000+ posts

Problemy i Pytania

AndrzejL1 wrote:

Dzięki za odpowiedź. Zastanawiam się czy potraktować zatem te liczby w programie jako ciąg znaków, czy może da się jakoś obciąć wynik mnożenia do 3 cyfr po przecinku?

Możesz przykładowo zapisywać liczby bez przecinka i tylko zmianić na z przecinkiem po wszystkich obliczeniach. Przykładowo, gdy komputery mają do czynienia z pieniędzmi, to nie zapisujesz złotówek z przecinkiem, tylko zapisujesz grosze. Troche głupio by było, gdyby przez takie błędy ktoś stracił albo zyskał pieniądze.

Pełne liczby nie mają tego problemu. Więc możesz na przykład najpierw obliczyć 1 * 7000 (czyli przesuwasz przecinek tak, źeby nie było źadnych liczb po przecinku, a na końcu - gdy chcesz pokazać uźytkownikowi wynik, dzielisz wszystko przez 1000.
AndrzejL1
Scratcher
100+ posts

Problemy i Pytania

Przy dzieleniu znowu wyjdzie kiszka. Ale jest prosty sposób na pozbycie się tych nadmiarowych cyfr - wystarczy wyciąć te od lewej, które są ok i wkleić je jako prawidłowe.
W sumie jeśli potraktuję te liczby do zaokrąglania jako tekst, to nic nie będzie trzeba liczyć. Ale to już prawie cały program do zmiany. Dzięki jeszcze raz.

say [Łatwiej zrobić projekt, niż wymyślić jak ma wyglądać podpis]

Powered by DjangoBB