Limitazioni di numeri in virgola mobile per quantità monetarie

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Limitazioni di numeri in virgola mobile per quantità monetarie

    AldoBaldo ha scritto:


    Non siamo tutti Sheldon Cooper, e a volte ci accontentiamo di capire almeno le piccole cose.
    Sono d'accordo, ma sull'argomento "calcoli grafici & simulazioni" sono ... abbastanza... ferratino
    Diciamo che il mondo "reale", cioè quello che si fa nei programmi "veri" (per questi intendo fatti da gente che sa quello che sta facendo) la situazione non è banale come si potrebbe immaginare.
    Nell'esempio che ho messo ecco come calcolare 1/radicequadrata(x)
    
    float InvSqrt(float x)
    {
       float xhalf = 0.5f*x;
       int i = *(int*)&x;       
       i = 0x5f3759df - (i>>1); 
       x = *(float*)&i;
       x = x*(1.5f-xhalf*x*x);
       return x;
    }
    E' un esempio tipico (nel senso molto famoso) per dare anche solo una "infarinatura" che è diciamo così un "pochino" oltre ai corsetti di Calcolo Numerico che si fanno i primi anni.
    ---
    Probabilmente l'intento del docente era proprio quello di far riflettere gli studenti che... nulla è facile, neppure calcoli all'apparenza banali, mediante il calcolatore.
  • Re: Limitazioni di numeri in virgola mobile per quantità monetarie

    AldoBaldo ha scritto:


    ...in effetti con i char non credo sia poi così sicuro il "risparmio" in termini di spazio di memoria rispetto al classico int...
    Qui ci andrebbe lo spiegone storico del perchè e percome funzionano le CPU odierne coi numeri float.
    Nasce tutto dagli anni '60, dove esistevano problemi enormi sia di memoria (cioè RAM), sia di velocità di elaborazione.
    Quindi si studiarono metodi più o meno "quick-and-dirty", adatti all'hardware del tempo.
    Circa nel 1985 era normalissimo scrivere programmi assembler 6502 in meno di 1000 byte, anche una quarantina a seconda dei casi.

    Oggi un telefono ha 3GB di RAM (e più), ma le "tecniche" studiate a quel tempo sono rimaste pressochè invariate.
    Portandosi dietro tutti i limiti che (a quel tempo) erano un tradeoff tra hardware "moscio" ma comunque sufficiente, quando ben usato, a portare l'uomo sulla Luna.

    OGGI si potrebbe "radere al suolo" e ripartire da capo, ma non si fa, e non si farà.
  • Re: Limitazioni di numeri in virgola mobile per quantità monetarie

    L'esempio che hai proposto alla nostra attenzione l'ho letto tutto (come tutto quello che proponi alla nostra attenzione) capendoci purtroppo ben poco. Con tutto ciò, non mi scoraggio e continuo a divertirmi con il C (e con un po', ma solo un po', di C++).

    Ricordo un corso di aggiornamento, a scuola, nel quale un "luminare" ebbe ad affermare che il valore di una società non si misura dal livello delle sue eccellenze, bensì dal livello della sua mediocrità. Non so quanti miei colleghi afferrarono la portata di quella breve affermazione, ma io lo feci. Io sono sicuramente un mediocre, e spero di avere un livello di mediocrità sufficiente a esprimere una collettività ragionevolmente evoluta. Sempre migliorabile, sempre disposto a tentare di migliorarsi (fin dove possibile).
  • Re: Limitazioni di numeri in virgola mobile per quantità monetarie

    AldoBaldo ha scritto:


    L'esempio che hai proposto alla nostra attenzione l'ho letto tutto (come tutto quello che proponi alla nostra attenzione) capendoci purtroppo ben poco. Con tutto ciò, non mi scoraggio e continuo a divertirmi con il C (e con un po', ma solo un po', di C++)...
    E' un articolino assai interessante su due argomenti che sono stati menzionati in questo thread

    1) manipolazione di numeri in virgola mobile impacchettati a 32bit (i float insomma)
    2) aggiunta: metodi precisi e veloci per calcoli in virgola mobile per applicazioni 3D (videogiochi o quello che si vuole)

    Il punto (2) riguarda un'applicazione davvero carina di uno sviluppo in serie (o approssimazione di Newton se preferisci) troncata immediatamente.
    Diciamo livello "furbo", molto "furbo"

    Il punto (1), la "costante magica" invece è di livello guru-mondiale

    Diciamo che il mondo "vero" è parecchio oltre al livello hobbystico-dilettantistico-bimbominkia-forummista o come lo si vuol chiamare.

    Ma è una situazione banale: un buon dentista ha livelli di competenze enormemente superiori all'uomo della strada, il quale invece (non si sa perchè) spesso "immagina" di essere in grado di fare (o sapere) nell'informatica tanto quanto un vero esperto.

    Vabbuò quel paperino è davvero interessante, suggerisco di prenderne ispirazione
  • Re: Limitazioni di numeri in virgola mobile per quantità monetarie

    Fino al livello "hobbystico-dilettantistico-forummista" ti seguo volentieri e accetto quei lemmi non come insulto ma come espressioni che descrivono in pieno il mio status. "Bimbominkia" invece non mi riguarda per niente, e mi spiace se hai pensato a me in quei termini. Voglio credere che non sia così, se no dovresti fare un po' di autocritica.
Devi accedere o registrarti per scrivere nel forum
19 risposte