Select the product you need help with
How to: implementazione personalizzata arrotondamento procedureIdentificativo articolo: 196652 - Visualizza i prodotti a cui si riferisce l?articolo. In questa paginaSommarioSono disponibili un numero di diversi algoritmi di arrotondamento nei prodotti Microsoft. Arrotondamento algoritmi compreso aritmetiche arrotondamento in funzione Round() del foglio di lavoro di Excel effettuato arrotondamento nelle funzioni CInt(), CLng() e Round() in Visual Basic, Applications Edition. Viene descritto quali di Visual Basic vari Applications funzioni di arrotondamento si e fornisce esempi di utilizzo delle funzioni. Inoltre, l'articolo include funzioni di esempio che implementano vari algoritmi di arrotondamento. InformazioniArrotondamento descrizioneÈ necessario arrotondare quando si desidera convertire un numero di maggiore precisione in un numero minore precisione. Il caso più comune è quando è necessario convertire un numero a virgola mobile in un valore integer.Arrotondamento verso il bassoLa forma più semplice di arrotondamento è troncamento. Qualsiasi cifra dopo la precisione desiderata viene semplicemente ignorati. La funzione VBA Fix() è un esempio di troncamento. Ad esempio, Fix(3.5) è 3 e Fix(-3.5) è -3.La funzione INT() arrotondato per difetto all'intero massimo minore del valore. Sia Int() Fix() funzionano allo stesso modo con numeri positivi - troncamento - e ottenere risultati diversi per i numeri negativi: Int(-3.5) fornisce da -4. La funzione Fix() è un esempio di arrotondamento simmetrico, perché influisce sulla grandezza (valore assoluto) di numeri positivi e negativi nello stesso modo in cui. La funzione INT() è un esempio di arrotondamento asimmetrica perché interessa la grandezza di numeri positivi e negativi in modo diverso. Excel dispone di funzioni di foglio di calcolo simile: Int() Floor() e RoundDown(). Int() funziona allo stesso modo come int() in Visual Basic, Applications Edition. Floor() tronca i valori positivi, ma non funziona con numeri negativi. La funzione RoundDown() funziona nello stesso modo la funzione VBA Fix(). Microsoft SQL Server dispone di una funzione Round() che può essere utilizzato come la funzione VBA Fix(). SQL Server inoltre dispone di una funzione di Floor(), funziona allo stesso modo come funzione INT() VBA. Arrotondamento verso l'altoSQL Server ed Excel dispongono di una funzione denominata Ceiling(), che viene sempre arrotondato frazione di (positivo più) al valore successivo.Visual Basic, Applications Edition non è una funzione di accesso round corrispondente. Tuttavia, per i numeri negativi sia Fix() e int() utilizzabili per arrotondare verso l'alto, in modi diversi. Fix() arrotonda a 0 (up nel senso assoluto, ma verso il basso in termini di grandezza assoluto). Fix(-3.5) è-3.5. Int() arrotondato da 0 (alto in termini di grandezza assoluto, ma verso il basso nel senso assoluto). Int(-3.5) è da -4. Arrotondamento aritmeticiQuando si arrotondano sempre inattivo o attivo, il numero risultante non è necessariamente il più vicino al numero originale. Ad esempio, se si arrotondare 1,9 a 1, la differenza è molto superiore se è arrotondato fino a 2. È facile verificare che i numeri da 1.6 a 2.4 devono essere arrotondati al 2.Tuttavia, cosa 1.5, che è equidistante compreso tra 1 e 2? Per convenzione, il numero a metà viene arrotondato. È possibile implementare arrotondamento di numeri a metà in modo simmetrico, tale 0,5 viene arrotondato per difetto su -1 o in modo asimmetrico, in cui 0,5 viene arrotondato a 0. Le funzioni riportate di seguito forniscono arrotondamento aritmetici simmetrica: La funzione di foglio di calcolo di Excel Round(). La funzione di SQL Server Round() possibile eseguire l'arrotondamento aritmetici simmetrica. La funzione riportata di seguito forniscono arrotondamento aritmetici asimmetrica: Il metodo Round() della libreria Math Java. Qualsiasi funzione che esegue l'arrotondamento aritmetici non dispone di Visual Basic, Applications Edition. Numero pari di arrotondamentoQuando si aggiungono valori arrotondati, sempre arrotondamento 0,5 nella stessa direzione comporta una differenza che cresce più numeri aggiunta insieme. Un modo per ridurre al minimo la differenza consiste con arrotondamento.Arrotonda arrotondamento numero pari 0,5 fino a volte e giù a volte. La convenzione è arrotondare al numero pari più vicino, in modo che sia 1.5 e 2.5 arrotondare 2 e 3.5 e 4.5 che entrambi arrotondare a 4. Arrotondamento è simmetrico. In Visual Basic, Applications Edition, eseguono arrotondamento le seguenti funzioni numeriche: CByte(), CInt(), CLng(), CCur() e Round(). Non sono disponibili funzioni di foglio di calcolo di Excel che eseguono l'arrotondamento. Arrotondamento casualeAnche arrotondamento, è possibile differenza totali. È possibile eseguire un passaggio aggiuntivo per rimuovere la distorsione, arrotondando 0,5 alto o verso il basso in modo casuale. In questo modo, anche se i dati sono deliberatamente distorta, differenza potrebbe essere ridotta a icona. Tuttavia, utilizzando l'arrotondamento casuale con dati distribuiti in modo casuale potrebbe causare un più grande differenza di arrotondamento. Arrotondamento casuale potrebbe causare due totali di diversi sugli stessi dati.Prodotti non Microsoft implementano qualsiasi tipo di routine di arrotondamento casuale. Alternative di arrotondamentoArrotondamento alternativo è arrotondamento tra 0,5 backup e 0,5 verso il basso in chiamate successive.Prodotti non Microsoft implementano una routine di arrotondamento alternativa. La funzione Round() è implementato in modo incoerenteLa funzione Round() non implementata in modo coerente tra diversi prodotti Microsoft per motivi storici.Nella tabella riportata di seguito si riferisce prodotto implementazione:
Product Implementation
----------------------------------------------------------------------
Visual Basic for Applications 6.0 Banker's Rounding
Excel Worksheet Symmetric Arithmetic Rounding
SQL Server Either Symmetric Arithmetic Rounding
or Symmetric Round Down (Fix)
depending on arguments
Java Math library Asymmetric Arithmetic Rounding
La funzione di Round() in Visual Basic 6.0 e Visual Basic, Applications Edition 6.0 esegue l'arrotondamento. Dispone di un argomento di secondo facoltativo che specifica il numero di cifre decimali, arrotondare per: Dati di esempioNella tabella riportata di seguito sono riportati alcuni dati di esempio e gli effetti dei vari metodi di arrotondamento nel numeri e i totali generati.
Number/Int./Fix/Ceiling/Asym. Arith./Sym. Arith./Banker's/Random/Alt.
---------------------------------------------------------------------
-2.6 -3 -2 -2 -3 -3 -3 -3 -3
-2.5 -3 -2 -2 -2 -3 -2 -2 -3
-2.4 -3 -2 -2 -2 -2 -2 -2 -2
-1.6 -2 -1 -1 -2 -2 -2 -2 -2
-1.5 -2 -1 -1 -1 -2 -2 -1 -1
-1.4 -2 -1 -1 -1 -1 -1 -1 -1
-0.6 -1 0 0 -1 -1 -1 -1 -1
-0.5 -1 0 0 0 -1 0 -1 -1
-0.4 -1 0 0 0 0 0 0 0
0.4 0 0 1 0 0 0 0 0
0.5 0 0 1 1 1 0 1 1
0.6 0 0 1 1 1 1 1 1
1.4 1 1 2 1 1 1 1 1
1.5 1 1 2 2 2 2 1 1
1.6 1 1 2 2 2 2 2 2
2.4 2 2 3 2 2 2 2 2
2.5 2 2 3 3 3 2 3 3
2.6 2 2 3 3 3 3 3 3
Totale di tutti i numeri: Number/Int./Fix/Ceiling/Asym. Arith./Sym. Arith./Banker's/Random/Alt. --------------------------------------------------------------------- 0.0 -9 0 9 3 0 0 1 0 Totale di tutti i numeri negativi: Number/Int./Fix/Ceiling/Asym. Arith./Sym. Arith./Banker's/Random/Alt. --------------------------------------------------------------------- -13.5 -18 -9 -9 -12 -15 -13 -13 -14 Totale di tutti i numeri positivi: Number/Int./Fix/Ceiling/Asym. Arith./Sym. Arith./Banker's/Random/Alt. --------------------------------------------------------------------- 13.5 9 9 18 15 15 13 14 14 La tabella viene visualizzata la differenza tra i vari metodi di arrotondamento. Per distribuite in modo casuale i numeri positive e negative, Fix(), arrotondamento aritmetici simmetrica, arrotondamento e arrotondamento alternati forniscono la differenza minima dai totali effettivi, con arrotondamento casuale non molto dietro. Se i numeri sono sia a tutti i positivo o negativo tutti, mezzo arrotondamento, alternati arrotondamento e arrotondamento casuale tuttavia la differenza minima dai totali effettivi. Funzioni definite dall'utente arrotondamento di esempioIl codice di esempio nella sezione seguente listato funzione fornisce le implementazioni di esempio per ciascuno dei tipi arrotondamento descritti.Le funzioni disponibili sono:
AsymDown Asymmetrically rounds numbers down - similar to Int().
Negative numbers get more negative.
SymDown Symmetrically rounds numbers down - similar to Fix().
Truncates all numbers toward 0.
Same as AsymDown for positive numbers.
AsymUp Asymmetrically rounds numbers fractions up.
Same as SymDown for negative numbers.
Similar to Ceiling.
SymUp Symmetrically rounds fractions up - that is, away from 0.
Same as AsymUp for positive numbers.
Same as AsymDown for negative numbers.
AsymArith Asymmetric arithmetic rounding - rounds .5 up always.
Similar to Java worksheet Round function.
SymArith Symmetric arithmetic rounding - rounds .5 away from 0.
Same as AsymArith for positive numbers.
Similar to Excel Worksheet Round function.
BRound Banker's rounding.
Rounds .5 up or down to achieve an even number.
Symmetrical by definition.
RandRound Random rounding.
Rounds .5 up or down in a random fashion.
AltRound Alternating rounding.
Alternates between rounding .5 up or down.
ATruncDigits Same as AsyncTrunc but takes different arguments.
Tutte queste funzioni accettano di due argomenti: il numero da arrotondare e un fattore facoltativo. Se il fattore viene omesso, le funzioni restituiscono un valore integer creato da uno dei metodi sopra. Se il fattore viene specificato, il numero verrà ridimensionato per il fattore per creare diversi effetti di arrotondamento. AsymArith (2.55, 10) produce ad esempio 2.6, ovvero viene arrotondato al fattore di 1/1/10 di = = 0,1. Nota: Fattore pari a 0 genera un errore in fase di esecuzione: 1/fattore = 1/0. Nella tabella seguente sono illustrati gli effetti di vari fattori: Expression Result Comment -------------------------------------------------------------------- AsymArith(2.5) 3 Rounds up to next integer. BRound(2.18, 20) 2.2 Rounds to the nearest 5 cents (1/20 dollar). SymDown(25, .1) 20 Rounds down to an even multiple of 10. L'eccezione alla descrizione del precedente è ADownDigits, che è una funzione di modello che consente di specificare il numero di cifre decimali, anziché un fattore. Expression Result Comment --------------------------------------------------------------------- ADownDigits(2.18, 1) 2.1 Rounds down to next multiple of 10 ^ -1. Elenco di funzioneNota: con eccezione di funzione di Excel MRound() foglio di lavoro, predefinito aggiuntivo arrotondamento funzioni accettano argomenti in modo di ADownDigits, in cui il secondo argomento specifica il numero di cifre anziché un fattore di. Le implementazioni di arrotondamento presentate in questo articolo utilizzare un fattore, come MRound(), che è più flessibile perché non è necessario arrotondare a una potenza di 10. È possibile scrivere funzioni wrapper nel formato ADownDigits. Mobile punto limitazioniTutte le implementazioni di arrotondamento presentate in questa sezione utilizzare il tipo di dati double, che può rappresentare circa 15 cifre decimali.Poiché non tutti i valori frazionari possono essere espressa esattamente, è possibile ottenere risultati imprevisti perché il valore visualizzato non corrisponde al valore archiviato. Ad esempio, il numero 2,25 potrebbe essere stato memorizzato internamente come 2.2499999..., che verrà arrotondato per difetto con arrotondamento aritmetici, invece di backup come è prevedibile. Inoltre, ulteriori calcoli che viene inserito un numero tramite la maggiore possibilità che il valore binario memorizzato verrà diversa dal valore decimale ideale. Se questo è il caso, sarà necessario scegliere un tipo di dati diversi, ad esempio valuta, che corrisponde esattamente a 4 cifre decimali. È inoltre possibile apportare la tipi di dati Variant e l'utilizzo CDec() per convertire il tutto nel tipo di dati Decimal, che può essere esatto a 28 cifre decimali. Valori di valuta arrotondamentoQuando si utilizza il tipo di dati valuta, che corrisponde esattamente a 4 cifre decimali, in genere si desidera arrotondare per centesimi 2 cifre decimali.La funzione di Round2CB riportato di seguito è una variante hardcoded che esegue l'arrotondamento a 2 cifre decimali, ma non moltiplicare il numero originale. Ciò evita una condizione di overflow possibile se l'importo in valuta sta per raggiungere i limiti del tipo di dati valuta. Valori decimali di arrotondamentoDi seguito è un esempio di asimmetrica aritmetici arrotondamento utilizzando il tipo di dati decimal:Eliminazione di precisione come un collegamento di arrotondamentoL'arrotondamento come insegnato a scuola, è in genere aritmetico arrotondamento utilizzando numeri positivi. Con questo tipo di arrotondamento, è necessario conoscere il numero per 1 cifra precedente in cui sono arrotondamento al. È ignorare cifre oltre la prima posizione decimale. In altre parole, la precisione è stata eliminata come scelta rapida per il valore di arrotondamento.Ad esempio, sia 2.5 e 2.51 arrotondato fino a 3, mentre sia 2.4 e 2.49 arrotondare per difetto a 2. Quando si utilizza arrotondamento (o altri metodi che arrotondano 0,5 in alto o verso il basso) o quando l'arrotondamento di numeri negativi, utilizzando l'arrotondamento aritmetici asimmetrica, l'eliminazione di precisione può comportare risultati non corretti in cui non può essere arrotondato al numero più vicino. Ad esempio, con arrotondamento, 2.5 Arrotonda verso il basso a viene arrotondato a 2 e 2.51 fino a 3. Con arrotondamento aritmetici asimmetrica-2.5 arrotondato fino a tra -2 mentre-2.51 Arrotonda per difetto a da -3. Le funzioni definite dall'utente presentate in questo articolo consente di tenere precisione completa del numero in considerazione quando si esegue l'arrotondamento. RiferimentiGuida di Visual Basic, versione 6.0; argomento: Int e Fix funzioni; funzione round Transact SQL Guida; argomento: funzione ARROTONDA, funzione floor; funzione matematico (c) 1998 Microsoft Corporation, tutti i diritti riservati. Il contributo di Malcolm Stewart, Corporation. ProprietàIdentificativo articolo: 196652 - Ultima modifica: giovedì 15 luglio 2004 - Revisione: 3.2 Le informazioni in questo articolo si applicano a:
Traduzione automatica articoli Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica. Clicca qui per visualizzare la versione originale in inglese dell?articolo: 196652
(http://support.microsoft.com/kb/196652/en-us/
)
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO. | Traduzione articoli |




Torna all'inizio








