Problema scrittura valore Double

cancel
Showing results for 
Search instead for 
Did you mean: 
tavvolley
Active Member

Problema scrittura valore Double

Ciao a tutti
devo memorizzare all'interno di alfresco il prezzo di una fattura. Il problema è il seguente , il model implementa il campo come double, ma quando leggo la stringa:

1.256,20 alfresco memorizza il valore in modo strano ci aggiunge altre 4 o 5 cifre dopo la virgola ma soprattutto invece di mettere ,20 mette ,199450 e visualizza
1.256,19 gravissimo errore in quanto l'importo NON coincde con quello riportato all'interno del PDF.
Cosa devo fare? Come posso risolvere il problema?
Il model iniziale mappava il campo come stringa ho cambiato il model da text a dobule per fare le ricerche sui numeri ma ora la situazione è peggiorata ci sono circa 170.000 fatture già memorizzate.
3 Replies
davidciamberlan
Alfresco Employee

Re: Problema scrittura valore Double

Ciao,
non è mai una buona idea (in generale e non solo in Alfresco) usare il valore double per numeri che devono essere precisi.
E' scritto anche nella documentazione java di Oracle sui datatype:

this data type should never be used for precise values, such as currency.

Se il tuo campo rappresenta una valuta e vuoi poterlo trattare come valore numerico, una possibile soluzione potrebbe essere convertire l'importo in centesimi e memorizzarlo in un metadato di tipo intero. Quando dovrai mostrarlo all'utente potrai fare una semplice divisione per 100 per riottenere l'importo in euro.
Valuta se questa soluzione è praticabile per il tuo scenario. Altrimenti considera l'ipotesi di tornare al tipo TEXT.
tavvolley
Active Member

Re: Problema scrittura valore Double

scusa se mi sono accorto della tua risposta solo ora, l'idea sembra buona. Spero solo che la divisione per 100 non faccia qualche strano comportamento in fase di approssimazione. Purtroppo sono vincolato a fare il campo numerico perchè con il testo le query non vengono eseguite in lucene correttamente (es: importo maggiore di 1.745,56) .

openpj
Moderator
Moderator

Re: Problema scrittura valore Double

La cosa migliore sarebbe estendere il data dictionary di Alfresco andando ad aggiungere un nuovo dataType per le properties.

Alfresco di default ne ha diversi come ad esempio: d:text, d:date, d:noderef. Il prefisso d rappresenta il namespace del dominio delle definizioni proprio dei dataType dei metadati.

In questo modo ti puoi definire la tua property che utilizza la tua implementazione Java del dataType e puoi anche definirti in che modo deve essere indicizzata. Trovi tutte le definizioni dei tipi nel dictionaryModel di Alfresco:

https://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/data-model/config/al...

Spero ti aiuti Smiley Happy