La domanda potrebbe essere un po' insolita...
Qual'è il linguaggio di programmazione che permette di operare con i numeri più elevati senza causare overflow?![]()
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
Scusa, quanto intendi per "elevati"??? Quantifica in modo più preciso. Poi, cosa molto importante, devi usare numeri interi o floating-point??Originariamente inviato da goku370
Qual'è il linguaggio di programmazione che permette di operare con i numeri più elevati senza causare overflow?![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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
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"
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.
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
Non li ho mai usati...ma se devi solo trattare con numeri e formule prova con il FORTRAN o MATLAB
![]()
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?
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
mi da overflow appena uso più di 8-9 cifre (num è una variabile dichiarata in Double)codice:Resto = num Mod 2
Utilizzando invece
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?codice:resto = num - (Int(num / 2))*2)
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
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)