Newsgroup: it.lavoro.informatica
Titolo: LOL Firebird

scusate, qualcuno di voi ha avuto in passato esperienze col database
Firebird?
al volo: ma sono tarato io, oppure la gestione dei FLOAT di Firebird è un
po' (diciamo) stranetta?
tipo: se in un FLOAT metto 10.0, lui memorizza 10.0.
se metto 10.5 mette 10.5.
ma se metto 10.3, lui memorizza 10.2999999999999.
scusate, magari ci sono gruppi e forum specifici, ma intanto volevo
chiedere a voi...
d.
-- 
________________________________
Dan (34, MI)
34 years uninterrupted breathing
________________________________

 ma se metto 10.3, lui memorizza 10.2999999999999.
L'ho usato un pò, ma non mi risultano cose simili. Potrebbe essere un
problema  dell'interfaccia o programma con cui leggi il campo. Prova a
scrivere ed interrogare la tabella con il tool di serie di Firebird,
ISQL.

 chiedere a voi...
dipende come hai impostato la precisione, ma i float li ho sempre 
evitati meglio DECIMAL(9,2)
perche' usi float? :-D
-- 
http://www.evilripper.net
http://www.flickr.com/photos/evilripper/

 po' (diciamo) stranetta?
Io non ci vedo nulla di strano.

 ma se metto 10.3, lui memorizza 10.2999999999999.
Mi stupirei se non obbedisse a IEEE 754 (
http://it.wikipedia.org/wiki/
IEEE_754).
BTW usare float o double per rappresentare quantità di denaro è un
errore, devi usare decimal/numeric con la precisione richiesta dal
sistema legale in cui il tuo software opera ;)
--
ale
http://ale.riolo.co.uk

 sistema legale in cui il tuo software opera ;)
yeah! quoto e condivido tutto!
+ o - e' quello che volevo dire io, solo che il riolo si e' espresso un 
po' meglio... nel senso che il mio reply equivaleva al verso di una 
cornacchia e  questo al canto di un usignolo! :-D



ciao alessandro
non si tratta di quantità di denaro: sono valori presi da analisi mediche.
siccome non sapevo a priori il numero di decimali che avrei avuto, ho
sparato (senza pensarci troppo, eh) un bel "float", pensando di non avere
problemi se non un po' di spreco di spazio (fattore assolutamente non
cruciale nell'applicazione di cui mi sto occupando).
lo ammetto: da non-tecnico dei database, pur conoscendo a grandi linee il
funzionamento dei campi a virgola mobile, non pensavo avrei avuto problemi
a memorizzare il valore 1.2, ecco :-)
comunque sto passando alla notazione DECIMAL, eheh
ciao e grazie


 comunque sto passando alla notazione DECIMAL, eheh
Per quanto ti potrà sembrare assurdo, in applicazioni mediche float o
double potrebbero essere più "corretti" di decimal (in realtà dipende
da tante cose).
--
ale
http://ale.riolo.co.uk



assolutamente :-) infatti la soluzione che ho in mente (la metterò in piedi
da domani in poi, oggi ormai sono su altro) è ibrida.
si tratta essenzialmente di memorizzare una serie di dati (e vabe') e
riportarne l'andamento su un grafico, con le cifre in chiaro sul grafico
stesso. mi sa che alla fine memorizzerò tutto come float, che arrotonderò
in una vista che andrà a fare da datasource per il grafico... un po'
macchinoso, ma davvero non è un'applicazione realtime in cui il decimo di
secondo diventa problematico...


 d.
ps: il tutto sempre che non trovi un modo di visualizzare le cifre in
chiaro arrotondate "al volo" dal MS Chart per VS 2008 (un modo più semplice
di "passo da una vista", intendo)


 chiedere a voi...
   È normale: i numeri in virgola mobile non hanno sempre una 
rappresentazione precisa sia in base decimale che in base binaria.  Vedi, 
per una trattazione esaustiva: 
http://zeus.ing.unibs.it/infoa/Lucidi/Rappreali0708.pdf
, che rimanda a 
http://www.h-schmidt.net/FloatApplet/IEEE754.html
 per un convertitore 
on-line scritto in java (ma a soli 32 bit).  Questo trovo sia scritto in 
modo particolarmente facile da seguire e capire: 
http://docs.python.it/html/tut/node15.html
   Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Chiave PGP/GPG: EC885A8B

    Ciao,
si si
ho letto già altrove (ho anche già risposto, nel thread)
solo mi aspettavo che per valori "piccoli" non ci fossero particolari
problemi. evidentemente mi sbagliavo (ripeto: i database li uso, ma non
sono esattamente "il mio")
cia'


 ma se metto 10.3, lui memorizza 10.2999999999999.
Guarda che e' intrinseco nel concetto stesso di float. Che poi te lo
faccia vedere per esteso invece che arrotondato, questa e' altra
storia...
-- 
Ciao!
Luca

 avuto problemi a memorizzare il valore 1.2, ecco :-)
Perdona, anche qui: a te frega fino a un certo punto come viene
memorizzato, l'importante e' la TUA rappresentazione. Lo dico un altro
modo: passalo a una funzione che lo formatti correttamente, e vedrai
che il tuo valore torna come lo vorresti tu.
-- 
Ciao!
Luca

On 21 Apr, 12:49, "Luca Menegotto" <otlucaCAV...@CAVAMIyahoo.it>
wrote:

Eh già. A meno che vai a vedere i byte del db direttamente sul disco,
passi sempre attraverso un qualche tool o programma, con le sue
opzioni e regole di arrotondamento.
Un pò come i formati data.



lo dicevo in un altro post: questi dati se li prende direttamente un
componente che poi li mette giù come grafico. ora, o trovo una qualche
opzioncina di 'sto componente che dice "arrotonda a N cifre i valori in
chiaro" oppure mi arrangio in altro modo.... ma purtroppo la via della
funzione che arrotonda non è praticabile (pensavo di arrotondare in una
vista, in cui ci siano circa gli stessi campi ma definiti come decimal)
cia'


 vista, in cui ci siano circa gli stessi campi ma definiti come decimal)
mmmm solitamente con delphi qs cosa e' una cavolata, anche perche' 
firebird e' nato da interbase che e' il db creato da borland che 
affianca solitamente le apps in delphi...
prova a postare il codice della vista, come' che fai a convertirlo con 
un cast?


http://it.wikipedia.org/wiki/0,999.
..  ?

 po' (diciamo) stranetta?
tu gli hai detto di memorizzarlo come floating point, e lui 
diligentemente ha eseguito.
"stranetto" è che tu non ne conosca le conseguenze.

 vista, in cui ci siano circa gli stessi campi ma definiti come decimal)
Veramente avevi iniziato dando dello "stranetto" a Firebird. Adesso è
il componente....

 opzioncina di 'sto componente che dice "arrotonda a N cifre i valori
Eeee... la funzione ROUND di SQL? C'č, nel dialetto di Firebird...
-- 
Ciao!
Luca



hola root
sempre sul pezzo, tu, eh? :-)


 il componente....
imho hai letto due post nel thread e il resto li hai tralasciati




alla fine oggi non ho avuto tempo di sistemare 'sta cosa, spero di riuscire
domani. comunque sě, io pensavo di usare le funzioni di arrotondamento di
.net (come dicevo, da non-database-man non mi viene proprio spontaneo
pensare alle funzioni interne a sql) ma forse la "tua" soluzione č piů
efficiente...
