Hirdetés

Keresés

Új hozzászólás Aktív témák

  • mylastage

    csendes tag

    válasz velizare #2933 üzenetére

    Valami hasonló fapados volt igaz :) de eltelt 30 év és még mindig nincs megoldás.
    Függvények, eljárások, modulok, metódusok próbálnak segíteni az alap_problémán: miszerint nem tud számolni az istenített programnyelv.
    A kérdés még mindig ugyanaz:
    Hogy(an) írnak nem egyszerű scripteket ebben a programnyelvben, mikor nem tud számolni szegényke...?!

  • mylastage

    csendes tag

    Köszönöm a linkeket és az infót... de...

    "Pascalban az int változó sose vett fel tört értéket. Szerintem az emlékeid ködösítik a múltat. Persze ettől függetlenül a Real így működött, de az már a régmúlt."

    És mégis működött két integer használatával, és erre homályos foltok nélkül is emlékszem. Az egyik egész számokat, a másik a tört részét tárolta.

    "...mivel a 0.5 mindig felfelé kerekítése mérhető mértékben eltolja a kerekített számok eloszlását."

    OK, de hol marad a következetesség?! Van egy matematikai rendszer, aminek nem tudok megfelelni.
    A másik, hogy 0.5 kerekítése "a páros szám " irányába az miért is nulla?

    "The Python 3.0 approach eliminates this issue."
    ...és mégsem...

    Mint mondottam volt vala... csak egy értelmes megoldást keresek, vagy egy következetes választ...
    Az építőipar meg túltekint a www.malter.hu portálon, és már a tervezés is beletartozik, ahol nem mindegy fél cm eltérés sem. Kinek a papné, kinek a vakolat...

  • mylastage

    csendes tag

    Sajnálom, de nem tudom elfogadni "a számítógépes számábrázolás egyszerűen ilyen",
    "a lebegőpontos ábrázolás így működik" stb. kijelentéseket - mert ez nem magyarázat.
    15000 évvel ezelőtt (infotech szinten) mikor a Turbo Pascal volt a gyakorló nyelv az oktatásban, két 'int' változó megoldotta a helyi problémát - ami nem volt látható.
    Valós időben 25-30 év nem elegendő egy ilyen kulcsprobléma kiküszöbölésére??!
    Az ASM szintén 'két' változóban tárolja a tört kifejezést, ha ezt adom meg neki regiszter szinten.
    A kérdés még mindig ua. : egy változó értéke hogyan kap értéket az "X" milliomodik helyen, mikor nem adtam meg semmit sem...
    (Szeretem a pontosságot; az építőiparban fontos lehet 1-1 cm - szerintem)

  • mylastage

    csendes tag

    Köszönöm a válaszokat, de nem lettem meggyőzve...
    Egy változóban tárolt érték, miért vesz fel vhol az 'X' milliomodikon bármilyen értéket is?!

    A "klasszikus példa" esetén még szorzásról-osztásról sincs szó, csak összeadás és kivonás; de nem tud számolni... a miértje lett volna a kérdés, de a kuzinomnak ez nem ment át.
    A kerekítéstől mit várok??!
    Nem ennek a futási eredményét...

    x = 0.5
    x2 = round (x, 0)
    print (x2)

    A Python nyalókáknak gondolom nem szimpatizál a kérdés - miért kell egy programnyelvet isteníteni, mikor alapvető múveleteket nem tud megoldani?

    a MIÉRT érdekel, és a hogyan kerüljük ki a hibákat válaszok leginkább...
    A Decimal-t ill. a sympy-t megnézem mit kreálnak - köszi az infót -

  • mylastage

    csendes tag

    válasz kovisoft #2913 üzenetére

    Köszönöm a választ,
    az apróban való tárolás tényleg egy jó ötlet, de még mindig zavar, hogy szorzás esetén - ahol nincs szó végtelen tizedes törtről - hibás eredményt ad.
    Szintén egy klasszikus példa...

    print (1.1+2.2-3.3)

    ...miért nem nulla a végeredmény?!

  • mylastage

    csendes tag

    Sziasztok,
    egy kezdő Python könyvben volt egy árfolyam átváltó gyakorló feladat. Blender-hez akarok írni egy scriptet, ami a "padlóra" helyezi az objektum alját, ezért néztem bele a programnyelvbe (többek között a Blender scriptnyelve is a Python).

    Gondolom ismeritek...

    # EUR to CAD
    arfolyam_eurtocad = 1.57
    szamlalo = 1
    while (szamlalo < 21):
    cad = arfolyam_eurtocad * szamlalo
    print (szamlalo, " EUR = ", cad, " CAD ")
    szamlalo = szamlalo + 1

    Valamiért nem tud számolni a Python, mert az 1.57-nél az 5.,10, 19. 20. sornál az X milliomodik résznél ad valamennyi értéket a változóhoz.
    Utánanéztem, hogy a round() függvénnyel lehet kerekíteni pl. 2 tizedesjegyig.
    Csak az a baj, hogy nem tud kerekíteni sem. Előfordul, hogy az 5-öt lefelé kerekíti - és két tizedesnél ez 1%.
    Ha 100 millió EUR-t váltok CAD-ra (a példa alapján), akkor buktam 1 millát CAD-ban a Python miatt.
    Azt rebesgetik, hogy komoly scripteket lehet vele írni - biztos van megoldás - csak nem tudom hogyan lehetne kivédeni ezt a kellemetlenséget.

    Ha valakinek van megoldása és megosztja, köszönöm szépen - érdekelne a miértje is...
    Tegnap kezdtem a Pythont - szóval csak bonyolítás nélkül. :)
    Köszi előre is...

Új hozzászólás Aktív témák