eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingułamki (alternatywnie do floata)
Ilość wypowiedzi w tym wątku: 60

  • 1. Data: 2013-11-13 19:29:56
    Temat: ułamki (alternatywnie do floata)
    Od: firr <p...@g...com>

    juz pare razy sie zastanawialem cze gdyby
    zdefiniowac sobie liczbe jako pare integerow
    licznik i mianownik (najlepiej jako i64
    a nie i32 bo dla 32 bit chyba szybko mogloby
    dochodzic do przepelnienia) to czy takie
    rachunki nie mialyby szansy byc lepszymi
    od floata/double

    zalety sa np takie

    1) jest to szybkie tj arytmetyka calkowita bez dzielenia w wiekszosci operacji
    2) byloby to (poki sie nie wywali z powodu
    przepelnienia0 scisłe, tj nie traci informacji
    3) pozwala opoznic dzielenie, floaty wykonuja
    dzielenia z kazdym znakiem / - taka liczba o wiele
    rzadziej np przy wydruku na ekran reprezentacji dziesietnej

    wady - nie wiem czy to wogole by dzialalo tj
    boje sie ze szybko by sie przepelniało (ale moze
    dla i64 nie tak szybko?)

    ktos moglby rozwinac jakos ten temat i powiedzic
    cos na temat tej opcji?








  • 2. Data: 2013-11-13 20:29:15
    Temat: Re: ułamki (alternatywnie do floata)
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2013-11-13 19:29, firr pisze:
    > wady - nie wiem czy to wogole by dzialalo tj
    > boje sie ze szybko by sie przepelniało (ale moze
    > dla i64 nie tak szybko?)

    Bardzo szybko rosły by licznik i mianownik, ale można by zrobić je
    liczbami dowolnej precyzji.


  • 3. Data: 2013-11-13 20:43:08
    Temat: Re: ułamki (alternatywnie do floata)
    Od: "Ghost" <g...@e...pl>


    Użytkownik "Borneq" <b...@a...hidden.pl> napisał w wiadomości
    news:l60jvc$158$1@node1.news.atman.pl...
    >W dniu 2013-11-13 19:29, firr pisze:
    >> wady - nie wiem czy to wogole by dzialalo tj
    >> boje sie ze szybko by sie przepelniało (ale moze
    >> dla i64 nie tak szybko?)
    >
    > Bardzo szybko rosły by licznik i mianownik, ale można by zrobić je
    > liczbami dowolnej precyzji.

    Znaczny postep w stosunku do arytmetyki floata.
    Gratuluje Panowie, wynalezliscie alternatywna arytmetyke maszyn cyfrowych,
    troche dodupna, ale co tam.


  • 4. Data: 2013-11-13 21:02:12
    Temat: Re: ułamki (alternatywnie do floata)
    Od: firr <p...@g...com>

    W dniu środa, 13 listopada 2013 20:43:08 UTC+1 użytkownik Ghost napisał:
    > Użytkownik "Borneq" <b...@a...hidden.pl> napisał w wiadomości
    >
    > news:l60jvc$158$1@node1.news.atman.pl...
    >
    > >W dniu 2013-11-13 19:29, firr pisze:
    >
    > >> wady - nie wiem czy to wogole by dzialalo tj
    >
    > >> boje sie ze szybko by sie przepelniało (ale moze
    >
    > >> dla i64 nie tak szybko?)
    >
    > >
    >
    > > Bardzo szybko rosły by licznik i mianownik, ale można by zrobić je
    >
    > > liczbami dowolnej precyzji.
    >
    >
    >
    > Znaczny postep w stosunku do arytmetyki floata.
    >
    > Gratuluje Panowie, wynalezliscie alternatywna arytmetyke maszyn cyfrowych,
    >
    > troche dodupna, ale co tam.

    nie chodzi o wynalezienie ale o rozpatrzenie
    specyfiki 9czyli zalet i wad) tematu, bo jest
    nawet jako tako ciekawy

    problem wlasnie chyba jednak w tym ze ten licznik
    i mianownik by bardzo szybko rosly, tak ze byc
    moze dyskwalifikowaloby ten typ w wiekszosci
    zastosowan (?) acz to wymagaloby mz pewnego
    rozpatrzenia


  • 5. Data: 2013-11-14 05:19:09
    Temat: Re: ułamki (alternatywnie do floata)
    Od: "Ghost" <g...@e...pl>


    Użytkownik "firr" <p...@g...com> napisał w wiadomości
    news:76ab8c6d-f9d2-42d5-a02d-c154004c0c62@googlegrou
    ps.com...
    W dniu środa, 13 listopada 2013 20:43:08 UTC+1 użytkownik Ghost napisał:
    > Użytkownik "Borneq" <b...@a...hidden.pl> napisał w wiadomości
    >
    > news:l60jvc$158$1@node1.news.atman.pl...
    >
    > >W dniu 2013-11-13 19:29, firr pisze:
    >
    >> >> wady - nie wiem czy to wogole by dzialalo tj
    >
    >> >> boje sie ze szybko by sie przepelniało (ale moze
    >
    >> >> dla i64 nie tak szybko?)
    >
    > >
    >
    >> > Bardzo szybko rosły by licznik i mianownik, ale można by zrobić je
    >
    >> > liczbami dowolnej precyzji.
    >
    >
    >
    >> Znaczny postep w stosunku do arytmetyki floata.
    >
    >> Gratuluje Panowie, wynalezliscie alternatywna arytmetyke maszyn
    >> cyfrowych,
    >
    >> troche dodupna, ale co tam.

    >nie chodzi o wynalezienie ale o rozpatrzenie
    >specyfiki 9czyli zalet i wad) tematu, bo jest
    >nawet jako tako ciekawy

    >problem wlasnie chyba jednak w tym ze ten licznik
    >i mianownik by bardzo szybko rosly, tak ze byc
    >moze dyskwalifikowaloby ten typ w wiekszosci
    >zastosowan (?) acz to wymagaloby mz pewnego
    >rozpatrzenia

    Misiu, zastanow sie chwile czy takie trywialne pomysly nie mialy czasem
    prawa powstac juz u zarania informatyki (czyli na dlugo przed urodzinami
    Twojego taty), a skoro tak i skoro nie sa stosowane, to co to moze znaczyc?


  • 6. Data: 2013-11-14 07:55:16
    Temat: Re: ułamki (alternatywnie do floata)
    Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>

    W dniu 2013-11-13 19:29, firr pisze:
    > juz pare razy sie zastanawialem cze gdyby
    > zdefiniowac sobie liczbe jako pare integerow
    > licznik i mianownik (najlepiej jako i64
    > a nie i32 bo dla 32 bit chyba szybko mogloby
    > dochodzic do przepelnienia) to czy takie
    > rachunki nie mialyby szansy byc lepszymi
    > od floata/double
    >
    > zalety sa np takie
    >
    > 1) jest to szybkie tj arytmetyka calkowita bez dzielenia w wiekszosci operacji


    To, że jest to arytmetyka całkowita, wcale nie oznacza, że będzie
    szybka, tym bardziej, że trzeba wykonywać dodatkowe operacje.


    > 2) byloby to (poki sie nie wywali z powodu
    > przepelnienia0 scisłe, tj nie traci informacji

    Przepełnienie nastapi szybko przy dodawaniu liczb ułamkowych o różnych
    mianownikach....


    > 3) pozwala opoznic dzielenie, floaty wykonuja
    > dzielenia z kazdym znakiem / - taka liczba o wiele
    > rzadziej np przy wydruku na ekran reprezentacji dziesietnej

    Dla optymalizacji zamiast dzielenia będzie szukanie najlepszego
    mianownika przy dodawaniu.


    > wady - nie wiem czy to wogole by dzialalo tj
    > boje sie ze szybko by sie przepelniało (ale moze
    > dla i64 nie tak szybko?)

    Tak samo szybko.... (no ciut wolniej)

    > ktos moglby rozwinac jakos ten temat i powiedzic
    > cos na temat tej opcji?


    Tak swojego czasu bawiłem się, zabawa przednia, ale jeśli chodzi o
    szybkość działań i szybkość przepełnień, to po za miejscem, gdzie takich
    operacji potrzebujemy jest to duzo wolniejsze i dodatkowo szybko się
    przepełnia.

    --
    Kaczus
    http://kaczus.ppa.pl


  • 7. Data: 2013-11-14 09:03:42
    Temat: Re: ułamki (alternatywnie do floata)
    Od: Robert Winkler <n...@n...org>

    Spróbuj używając tej notacji ułamkowej zapisać wartość liczby pi,
    liczba Eulera albo wartość stałej Plancka.
    Aby zrobić to z wystarczająco dobrą dokładnością
    będziesz musiał przyjąć mianownik bliski przepełnienia zmiennej int,
    co uniemożliwi ci jakiekolwiek dalsze operacje.
    Zapis taki będzie wiec bezużyteczny w inżynierii, gdyż wiele obliczeń
    opiera się na trygonometrii, a bez liczby pi nic z tego.
    To samo z fizyką cząstek elementarnych, gdzie liczbę Eulera
    czy też stałą Plancka znajdziesz tam prawie na każdym kroku.
    W astronomii też niewiele zrobisz używając liczba 32-bitowych.
    Wszędzie tam stosowanie klasycznych liczb zmiennoprzecinkowych,
    mimo że ma też swoje wady, jest zdecydowanie lepsze.

    Ale żeby nie było tak pesymistycznie.
    Jest jedno zastosowanie gdzie stosowanie liczba zmiennoprzecinkowych
    jest niedopuszczalne i gdzie od dziesięcioleci stosuje się zapis podobny
    do proponowanego przez ciebie, czyli liczby stałoprzecinkowe,
    a domeną są finanse.
    Z tego powody bazy danych, niektóre języki programowania i biblioteki
    oferują typy danych rodzaju money czy decimal do przechowywania kwot.
    Przyjmuje się tam jednak stała wartość mianownika,
    jedną z wielokrotności liczby 10,
    na przykład 10000, zapewnia to 4 miejsca po przecinku,
    co wystarczy aby prawidłowo opisać problem zaokrągleń,
    przy założeniu że minimalną wartością jaką można operować
    jest cent, grosz lub ich odpowiednik z innych systemów walutowych.

    /Robert


  • 8. Data: 2013-11-14 09:05:04
    Temat: Re: ułamki (alternatywnie do floata)
    Od: firr <p...@g...com>

    W dniu czwartek, 14 listopada 2013 07:55:16 UTC+1 użytkownik Tomasz Kaczanowski
    napisał:
    > W dniu 2013-11-13 19:29, firr pisze:
    >
    > > juz pare razy sie zastanawialem cze gdyby
    > > zdefiniowac sobie liczbe jako pare integerow
    > > licznik i mianownik (najlepiej jako i64
    > > a nie i32 bo dla 32 bit chyba szybko mogloby
    > > dochodzic do przepelnienia) to czy takie
    > > rachunki nie mialyby szansy byc lepszymi
    > > od floata/double
    >
    > >
    >
    > > zalety sa np takie
    >
    > >
    >
    > > 1) jest to szybkie tj arytmetyka calkowita bez dzielenia w wiekszosci operacji
    >
    >
    >
    >
    >
    > To, że jest to arytmetyka całkowita, wcale nie oznacza, że będzie
    > szybka, tym bardziej, że trzeba wykonywać dodatkowe operacje.
    >
    >
    >
    >
    >
    > > 2) byloby to (poki sie nie wywali z powodu
    > > przepelnienia0 scisłe, tj nie traci informacji
    >
    >
    >
    > Przepełnienie nastapi szybko przy dodawaniu liczb ułamkowych o różnych
    > mianownikach....
    >
    >
    >
    >
    >
    > > 3) pozwala opoznic dzielenie, floaty wykonuja
    > > dzielenia z kazdym znakiem / - taka liczba o wiele
    > > rzadziej np przy wydruku na ekran reprezentacji dziesietnej
    >
    >
    >
    > Dla optymalizacji zamiast dzielenia będzie szukanie najlepszego
    > mianownika przy dodawaniu.
    >
    >
    >
    >
    >
    > > wady - nie wiem czy to wogole by dzialalo tj
    > > boje sie ze szybko by sie przepelniało (ale moze
    > > dla i64 nie tak szybko?)
    >
    >
    >
    > Tak samo szybko.... (no ciut wolniej)
    >
    >
    >
    > > ktos moglby rozwinac jakos ten temat i powiedzic
    >
    > > cos na temat tej opcji?
    >
    >
    >
    >
    >
    > Tak swojego czasu bawiłem się, zabawa przednia, ale jeśli chodzi o
    >
    > szybkość działań i szybkość przepełnień, to po za miejscem, gdzie takich
    >
    > operacji potrzebujemy jest to duzo wolniejsze i dodatkowo szybko się
    >
    > przepełnia.
    >
    >

    fajnie by bylo wiedziec jednak nieco wiecej
    na ten temat, ciekawe na przyklad 1 czy nie ma jednak jakichs przypadkow gdy to by
    sie
    jednak sprawdzalo 2 jak dzilalalo by np
    takie trywialne skracanie ze licznik i mianownik
    przesuwamy w prawo o ta sama ilosc bitów,
    czy niosloby to jakis wielki blad
    na przyklad mamy ulamek

    10010101011101010100110010100101001001001010101001
    / 10010010010001001001010010111111010100001010

    czy po prostu obciacie licznika i mianownika np o 10 bitow nioslo by duzy blad czy
    tez tego typu arytmetyka dzialalaby dla realnych zastosowan
    (tego typu skracanie jest technicznie o niebo szybsze niz algorytm do dzielenia -
    widomo ze
    dzielenie jest akcelerowane ale sama istota
    tej prostoty tutaj wydaje mi sie ew ciekawa)


  • 9. Data: 2013-11-14 09:12:00
    Temat: Re: ułamki (alternatywnie do floata)
    Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>

    W dniu 2013-11-14 09:03, Robert Winkler pisze:
    > Ale żeby nie było tak pesymistycznie.
    > Jest jedno zastosowanie gdzie stosowanie liczba zmiennoprzecinkowych
    > jest niedopuszczalne i gdzie od dziesięcioleci stosuje się zapis podobny
    > do proponowanego przez ciebie, czyli liczby stałoprzecinkowe,
    > a domeną są finanse.
    > Z tego powody bazy danych, niektóre języki programowania i biblioteki
    > oferują typy danych rodzaju money czy decimal do przechowywania kwot.
    > Przyjmuje się tam jednak stała wartość mianownika,
    > jedną z wielokrotności liczby 10,
    > na przykład 10000, zapewnia to 4 miejsca po przecinku,
    > co wystarczy aby prawidłowo opisać problem zaokrągleń,
    > przy założeniu że minimalną wartością jaką można operować
    > jest cent, grosz lub ich odpowiednik z innych systemów walutowych.

    Niestety tak przygotowane liczby nie przydają się aż tak bardzo w
    zastosowaniach finansowych. Bzdurne ograniczenie do 4 liczb po przecinku
    bierze w łeb, gdy zaczynamy działać na więcej niż jednej walucie, a gdy
    dojdą do tego procenty, są wręcz szkodliwe... Dlatego nie wiem do czego
    można stosować przykładowo TCurrency z Delphi nie przydaje się do
    niczego sensownego, ponad proste działania....




    --
    Kaczus
    http://kaczus.ppa.pl


  • 10. Data: 2013-11-14 09:40:05
    Temat: Re: ułamki (alternatywnie do floata)
    Od: Paweł Kierski <n...@p...net>

    W dniu 2013-11-14 09:12, Tomasz Kaczanowski pisze:
    > W dniu 2013-11-14 09:03, Robert Winkler pisze:
    >> Ale żeby nie było tak pesymistycznie.
    >> Jest jedno zastosowanie gdzie stosowanie liczba zmiennoprzecinkowych
    >> jest niedopuszczalne i gdzie od dziesięcioleci stosuje się zapis podobny
    >> do proponowanego przez ciebie, czyli liczby stałoprzecinkowe,
    >> a domeną są finanse.
    >> Z tego powody bazy danych, niektóre języki programowania i biblioteki
    >> oferują typy danych rodzaju money czy decimal do przechowywania kwot.
    >> Przyjmuje się tam jednak stała wartość mianownika,
    >> jedną z wielokrotności liczby 10,
    >> na przykład 10000, zapewnia to 4 miejsca po przecinku,
    >> co wystarczy aby prawidłowo opisać problem zaokrągleń,
    >> przy założeniu że minimalną wartością jaką można operować
    >> jest cent, grosz lub ich odpowiednik z innych systemów walutowych.
    >
    > Niestety tak przygotowane liczby nie przydają się aż tak bardzo w
    > zastosowaniach finansowych. Bzdurne ograniczenie do 4 liczb po przecinku
    > bierze w łeb, gdy zaczynamy działać na więcej niż jednej walucie, a gdy
    > dojdą do tego procenty, są wręcz szkodliwe... Dlatego nie wiem do czego
    > można stosować przykładowo TCurrency z Delphi nie przydaje się do
    > niczego sensownego, ponad proste działania....

    Rozwiązaniem jest float o podstawie 10 a nie 2 + dobra obsługa
    zaokrągleń.

    Sam używam opakowanego http://speleotrove.com/decimal/ - ma to m.in.
    taki ficzer, że 1.23 + 1.27 = 2.50 a nie 2.5


    --
    Paweł Kierski
    n...@p...net

strony : [ 1 ] . 2 ... 6


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: