Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569

    Il linguaggio migliore per operare con numeri elevati

    La domanda potrebbe essere un po' insolita...
    Qual'è il linguaggio di programmazione che permette di operare con i numeri più elevati senza causare overflow?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Il linguaggio migliore per operare con numeri elevati

    Originariamente inviato da goku370
    Qual'è il linguaggio di programmazione che permette di operare con i numeri più elevati senza causare overflow?
    Scusa, quanto intendi per "elevati"??? Quantifica in modo più preciso. Poi, cosa molto importante, devi usare numeri interi o floating-point??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Ok, devo ammettere di non essere molto esperto...
    Io uso normalmente Visual Basic e mi pare di capire che il tipo di variabile "più capiente" sia Double, a virgola mobile...
    Fino a che cifre può gestire?

    E poi, se si riesce a dichiarare il valore di una variabile senza far scattare errore, si possono eseguire operazioni (tipo sottrazione, divisione, etc.) sullo stesso numero?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non so come funzioni per gli altri linguaggio di programmazione, ma ad esempio in Java non esistono numeri in forma di formati primitivi che eccedano le capacità imposte dal linguaggio/macchina... però esistono una serie di classi (BigDecimal e BigInteger) che creano degli oggetti in grado di rappresentare numeri di qualsiasi "lunghezza" e permettono di gestire anche le operazioni su tali numeri. Probabilmente anche nel tuo linguaggio di programmazione ci saranno dei sistemi simili.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Se parliamo di VB6 il tipo più grande disponibile è effettivamente il double; lavorare su numeri più grossi è abbastanza inutile e soprattutto - con VB - è complicatissimo, soprattutto se parliamo di numeri in virgola mobile. Al massimo puoi creare una struttura contenente diversi long per simolare un intero a 64 bit o più.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Capisco...
    E in altri linguaggi? C'è qualche linguaggio particolarmente adatto a lavorare con i numeri e ad eseguire operazioni velocemente, o si equivalgono tutti?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  7. #7
    Non li ho mai usati...ma se devi solo trattare con numeri e formule prova con il FORTRAN o MATLAB

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... la lo scopo della domanda qual e'?

    Perche' cosi' si "brancola nel buio" ...

    Che devi fare con i numeri "grandi" ?

    Devono essere interi o in virgola mobile?

  9. #9
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Non avevo un intaresse specifico ma solo una curiosità...
    Per fare una prova ho creato (in VB6) un piccolo programma che verifica se un numero è primo...
    Innanzitutto l'algoritmo doveva capire se il numero era pari o dispari ma usando un'istruzione come

    codice:
    Resto = num Mod 2
    mi da overflow appena uso più di 8-9 cifre (num è una variabile dichiarata in Double)
    Utilizzando invece

    codice:
    resto = num - (Int(num / 2))*2
    mi funziona finchè il numero, con più di 14 cifre, non viene trasformato nella forma x,xxxE+yy (ps: qualcuno sa dirmi esattamente cosa significa? )
    Poi il risultato è spesso resto = 0 quindi numero pari anche quando non lo è effettivamente....
    Come mai?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  10. #10
    L'operatore Mod funziona con argomenti numerici qualsiasi (anche Double) , ma li converte internamente in interi Long, per cui un argomento maggiore di 2.147.000.000 (circa) produce un errore di overflow (il limite esatto e': 2^31-1, vengono utilizzati 32 bit [1 per il segno]).

    La notazione esponenziale: 1.2345E+99 equivale a: 1.2345*10^99= 123450000000000...
    e rappresenta un numero di 100 cifre, ma memorizzato con 5 cifre significative.

    Ciao !

    P.S.: visto che hai il Visual Basic o altri linguaggi, puoi dare un'occhiata alla documentazione riguardante i "tipi di dato" per verificare la "capienza" di ogni tipo.
    IceCube_HT (VB6 fan Club)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.