Andrea Pescetti ha scritto:
mantiene il comportamento tradizionale: la stringa vuota e' convertita a
zero.
In realta' qualcuno (Valerio?) qualche settimana fa aveva segnalato un
problema analogo e, anche se forse non ho risposto in lista, avevo
notato che in generale la gestione delel conversioni testo->numero non
e' omogenea: la casistica e' davvero complessa.
Ero andato a vedere la sezione corretta dello standard
http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part2.odt
e avevo ritenuto che questo fosse uno dei punti in cui lo standard, a
mio avviso, e' troppo approssimativo: e' un'ottima cosa che esista ODF,
ma questo non significa che sia perfetto o che dobbiamo spacciarlo per
forza come perfetto; OpenFormula e' la parte piu' giovane e ha dovuto
probabilmente tener conto del fatto che esistevano gia' varie
implementazioni non tutte concordi.
Se interessa, la sezione in questione e' la 6.3.5, ma se la leggete
vedete che vale piu' o meno tutto, compreso il fatto che (se A1 e' "123"
e A2 e' ""), il valore di A1+A2 puo' essere 123, errore o qualsiasi
numero, anche a seconda della lingua di sistema impostata: per assurdo,
e ripeto PER ASSURDO, potreste scrivere un vostro programma di foglio
elettronico che se legge da un file .ods la formula '="otto"+"dieci"'
restituisca 18 e questo sarebbe valido per OpenFormula. E sarebbe valido
anche se restituisse 810...
La mia mail era nella lista LibreOffice, perché la non compatibilità
all'indietro la considero una regressione. Purtroppo il baco che ho
aperto su freedesktop è stato chiuso con NOTABUG:
https://bugs.freedesktop.org/show_bug.cgi?id=46153
Grazie per i riferimenti, mi sarebbe costato cercarli.
In effetti lo standard è troppo permissivo, bisognerebbe chiedere una
precisazione sul comportamento. Tra come si comporta Excel o OpenOffice
non avrei dubbi su quale tenere in maggior conto, ma qualsiasi cosa sarà
decisa è sempre meglio che lasciare così sul vago.
Ho controllato sia su Win che su Linux, il comportamento è:
OpenOffice
----------
SUM function convert to 0 with "", " ", "-", "\", "/" and "_"
sum operator convert to 0 with "", " " and "-"
sum operator convert to #VALUE with "\", "/" and "_" (not a number)
LibreOffice
-----------
SUM function convert to 0 with "", " ", "-", "\", "/" and "_"
sum operator convert to 0 with ""
sum operator convert to #VALUE with " ", "-", "\", "/" and "_" (NaN)
quindi in LibreOffice hanno tolto la conversione implicita a 0 per lo
spazio e il trattino.
La funzione N() risolve, ma purtroppo richiede di modificare a mano
tutti i fogli precedenti che facevano affidamento su questo comportamento.
Valerio
---------------------------------------------------------------------
Per cancellarsi: [email protected]
Per informazioni: http://www.openoffice.org/it/
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it