L’angolo di By Sal

Excel & VBA, dentro e fuori, ed Altro

Archivio per il 'Excel' Categoria


Traduzione con Google di un blog su Msdn

Pubblicato da bysal su 26 Settembre, 2007

Questo il blog in inglese

Aggiornamento dell’edizione di calcolo

Ieri siamo stati avvisati ad un’edizione in Excel 2007 (e nei servizi 2007 dell’Excel) che coinvolgono il calcolo dei numeri intorno a 65.535. La squadra dell’Excel vorrebbe fornire una descrizione dell’edizione e spiegare che cosa stiamo facendo a questo proposito.

Priorità bassa
Ieri sera siamo stati avvisati ad un’edizione in Excel 2007 (e nei servizi 2007 dell’Excel) che coinvolgono il calcolo dei numeri intorno a 65.535. Il primo esempio che abbiamo sentito circa era =77.1*850, ma è diventato chiaro dalla nostra prova così come i rapporti supplementari che questo era appena un caso dove l’Excel 2007 restituirebbe un valore di 100.000 anziché 65.535. La maggior parte di questi rapporti supplementari è stata messa a fuoco su moltiplicazione (ex. =5.1*12850; =10.2*6425; =20.4*3212.5), ma la nostra prova ha indicato che questo realmente non ha avuto nulla fa con a moltiplicazione - si è manifestato con molti ma non tutti i calcoli in Excel che dovrebbe provocare 65.535 (=65535*1 e =16383.75*4 funzionati per esempio). Ulteriore esame ha provato un fenomeno simile con 65.536 pure. Questa edizione esiste soltanto in Excel 2007, versioni non precedenti.

Il problema
Questa edizione è stata introdotta quando stavamo facendo i cambiamenti alla logica di calcolo dell’Excel nel telaio di volta dell’ufficio 2007. Specificamente, l’Excel visualizza in modo errato il risultato di un calcolo in 12 casi molto specifici (descritti sotto). La chiave qui è che l’edizione non è realmente nel calcolo in se (il risultato del calcolo immagazzinato dentro ha eccelso la memoria è corretto), ma soltanto nel risultato che è indicato nel foglio. Detto un altro senso, =850*77.1 visualizzerà un valore errato, ma se allora moltiplicate il risultato da 2, otterrete la risposta corretta (cioè se A1 contiene “=850*77.1„ e A2 contiene “=A1*2„, A2 restituirà la risposta corretta di 131.070).

Così che cosa, specificamente, sono i valori che causa questo problema dell’esposizione? Dei numeri differenti di virgula mobile 9.214*10^18 (virgula mobile sul wikipedia) quell’Excel 2007 può immagazzinare, ci sono 6 numeri di virgula mobile (che usando rappresentazione binaria) fra 65534.99999999995 e 65535 e 6 fra 65535.99999999995 e 65536 che causano questo problema. Non potete realmente fornire direttamente questi numeri nell’Excel (poiché l’Excel rotondo a 15 cifre sull’entrata), ma tutto il calcolo che restituisce uno di quei risultati visualizzerà questa edizione se i risultati del calcolo sono visualizzati in una cellula. Tutti i altri risultati di calcolo non sono influenzati.

La soluzione
Prendiamo molto seriamente il calcolo in Excel e facciamo tutto noi latta per accertarci che il calcolo sia corretto per tutti i casi. Abbiamo fornito una difficoltà per questa edizione e siamo nelle fasi finali di vasto passaggio della prova per accertarci che la difficoltà funzionasse e non introducesse alcune edizioni supplementari - particolarmente alcune altre edizioni di calcolo. Questa difficoltà allora deve fare il relativo senso attraverso il nostro laboratorio ufficiale di configurazione e su un luogo di trasferimento dal sistema centrale verso i satelliti - che invitare ad accadere molto presto. Aggiungeremo una volta un altro alberino che è avvenuto con un collegamento al trasferimento dal sistema centrale verso i satelliti.
Martedì 25 settembre 2007 pubblicato 6:51 PM da David Gainer

Pubblicato su Excel, Microsoft | Non ci sono Commenti »

Ancora Errori, Articolo di Armando Di Grado

Pubblicato da bysal su 26 Settembre, 2007

Prelevato da Google Gruppi Excel.it

Chiedo scusa in anticipo per la lunghezza di questo post, ma la
ritengo necessaria
L’allarme gia’ lanciato per l’ormai famoso calcolo errato di Excel
(=850*77,1 che dovrebbe dare come risultato 65535 ma invece risulta
uguale a 100000) diventa ancor piu’ preoccupante dopo la scoperta di
altri calcoli errati
=77.1*850
=5.1*12850
=20.4*3212.5
=40.8*1606.25
=154.2*425
=212.5*308.4
=425*154.2
Immagino che ce ne saranno tanti altri, ancora non venuti alla luce.
La cosa strana e’ che tutti questi calcoli dovrebbero dare come
risultato 65535
Cosa vi dice questo numero?
- Numero delle porte del protocollo TCP-IP
- Valore piu’ grande rappresentabile usando 16 bit
- Numero di righe di Excel (versioni precedenti alla 2007) :-)
L’errore non si verifica per i calcoli senza decimali (se
moltiplichiamo 13107*5 il risultato e’ corretto)
Leggo in giro che un utente ha provato a studiare il comportamento
dell’anomalo risultato se sottoposto ad ulteriori operazioni. Il
risultato è il seguente: «supponiamo che la formula sia A1. A1+1
ritorna 100.001. A1 x 2 ritorna 131.070, come se A1 avesse dato 65.535
(il risultato corretto). A1 x 1 rimane 100.000, A1-1 ritorna 65.534,
A1/1 rimane 100.000 mentre A1/2 conduce a 32.767,5
Leggo anche altre segnalazioni di errori che riporto:
nel caso si scriva o calcoli un numero compreso tra 32.768 e 65.535
che contiene una porzione decimale di .848, il numero viene
visualizzato con una porzione decimale di .8479999999
Tutto questo a solo scopo informativo e certamente non per allarmare
gli utilizzatori di questo (fantastico) software.
Sta di fatto che uno di questi calcoli, neanche a farlo apposta e’
capitato in uno dei miei fogli di reportistica.
Un particolare prodotto (pila da 100 di supporti CD scrivibili) mi
costava 8,50 € + iva e in un anno ne avevo ordinati 6425
Il risultato era erroneamente 100000
Non vi dico il macello nel mio foglio, perche’ se questo numero viene
sommato ad un qualsiasi valore diverso da 1 torna a dare il risultato
corretto, altrimenti il risultato visualizzato e’ errato.
Fortunatamente, rappresentando questo valore fittizio (100000) in un
grafico ad istogramma, il valore che mostra equivale a 65535, ma
visualizzando l’etichetta dato con indicazione del valore restituisce
ancora una volta il valore errato.
Insomma un casino che potrete immaginare.
A mio parere la risoluzione di questo (questi?) bug dovrebbe essere di
priorita’ assoluta, perche’ immagino in quante applicazioni delicate
venga utilizzato questo software.
Applicazioni mediche prima di tutto, ma, perche’ no, anche economico-
finanziarie e magari militari!
Sinceramente in questa cosa io ci vedo una “umanizzazione” del
software, e di questa fallibilita’ non vi nascondo una certa
soddisfazione, nel senso che lo sento piu’ vicino a me, comune mortale
pieno di difetti e alla continua ricerca di riparare ai propri errori.
Chiedo al forum un parere su questa vicenda, e, scusandomi ancora per
la prolissita’,
Saluto tutti
Ciao
Armando Di Grado

Pubblicato su Excel, Microsoft | Non ci sono Commenti »

Ultima di Excel2007

Pubblicato da bysal su 25 Settembre, 2007

Sembra incredibile, per un foglio di calcolo, ma sbaglia i calcoli almeno visivamente, in una cella scrivete “=850*77,1″ come risultato vi troverete 100000, e non il solito “65535″.

Ho detto visivamente perchè se fate la “cella = 65535″ come risultato da “vero”, meraviglia dei calcoli oppure misteri, “Microsoftiani”.

Microsoft non e nuovo a questi problemi certo è, che siamo in attesa di una Patch, che risolva il problema.

Come appena ne ho notizia scriverò il link, Ciao By Sal

Pubblicato su Excel, Microsoft | Non ci sono Commenti »