[QGIS-it-user] QGIS "arrotonda" io valori

Buongiorno, su QGIS 3.22.0 WIN 10 Pro, inserisco i valori manualmente in un campo e mi ritrovo in tabella un valore leggermente diverso: tipo inserisco 10 e mi ritrovo 10.000000000324.
anche per la scala di rappresentazione, io metto 2000 e mi ritrovo 2000.0000000000000421

Qualcuno riesce ad aiutarmi a capire cosa stia succedendo.
Grazie in anticipo

Paolo Venturelli

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp (che allego).
Se inserisco un nuovo punto, ed inserisco 10.1 nel campo ELEVATION, tutto OK e mi trovo 10,100000000000000, ma se metto 10.2, mi trovo 10,199999999999999
con 10.3 trovo 10,300000000000001, con 10.4 trovo 10,400000000000000, con 10.5 trovo 10,500000000000000, con 10.6 trovo 10,600000000000000 invece con 10.7 trovo 10,699999999999999.
mi piacerebbe capire cosa succede
Grazie a chi saprà aiutarmi

Il giorno mer 10 nov 2021 alle ore 11:54 Paolo Venturelli <venturelli.paolo@gmail.com> ha scritto:

Buongiorno, su QGIS 3.22.0 WIN 10 Pro, inserisco i valori manualmente in un campo e mi ritrovo in tabella un valore leggermente diverso: tipo inserisco 10 e mi ritrovo 10.000000000324.
anche per la scala di rappresentazione, io metto 2000 e mi ritrovo 2000.0000000000000421

Qualcuno riesce ad aiutarmi a capire cosa stia succedendo.
Grazie in anticipo

Paolo Venturelli

SWMM_junctions.shp (3.08 KB)

SWMM_junctions.cpg (5 Bytes)

SWMM_junctions.qmd (650 Bytes)

SWMM_junctions.shx (972 Bytes)

SWMM_junctions.prj (400 Bytes)

Ciao Paolo,
purtroppo manca proprio il file .dbf che contiene la tabella degli attributi.
Puoi mettere tutti i file che compongono il layer ESRI Shapefile in un unico archivio ZIP.

A presto.

Andrea

Il 10/11/2021 12:38, Paolo Venturelli ha scritto:

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp (che allego).

Eccolo… la fretta e il nervoso …
Grazie
Paolo

Il giorno mer 10 nov 2021 alle ore 12:42 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Ciao Paolo,
purtroppo manca proprio il file .dbf che contiene la tabella degli
attributi.
Puoi mettere tutti i file che compongono il layer ESRI Shapefile in un
unico archivio ZIP.

A presto.

Andrea

Il 10/11/2021 12:38, Paolo Venturelli ha scritto:

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp
(che allego).

QGIS TREBASELEGHE JUNCTIONS.rar (3.92 KB)

succede che nel pc i numeri vengono convertiti in numeri a notazione binaria cioè in base 2 (0 1).
non tutti i numeri (cioè pochi!) appartenenti al campo dei numeri reali possono essere espressi in notazione binaria.
il numero sarà rappresentato "bene" se è una potenza di due.
in special modo, quindi, i numeri in virgola mobile e sarebbe qui lungo scrivere come si rappresenta in binario un tale numero (cerca sul web). il numero memorizzato sarà quindi il numero binario più vicino al numero in bse 10.
mg

Il 10/11/2021 12:38, Paolo Venturelli ha scritto:

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp (che allego).
Se inserisco un nuovo punto, ed inserisco 10.1 nel campo ELEVATION, tutto OK e mi trovo 10,100000000000000, ma se metto 10.2, mi trovo 10,199999999999999
con 10.3 trovo 10,300000000000001, con 10.4 trovo 10,400000000000000, con 10.5 trovo 10,500000000000000, con 10.6 trovo 10,600000000000000 invece con 10.7 trovo 10,699999999999999.
mi piacerebbe capire cosa succede
Grazie a chi saprà aiutarmi

Il giorno mer 10 nov 2021 alle ore 11:54 Paolo Venturelli <venturelli.paolo@gmail.com <mailto:venturelli.paolo@gmail.com>> ha scritto:

    Buongiorno, su QGIS 3.22.0 WIN 10 Pro, inserisco i valori
    manualmente in un campo e mi ritrovo in tabella un valore
    leggermente diverso: tipo inserisco 10 e mi ritrovo 10.000000000324.
    anche per la scala di rappresentazione, io metto 2000 e mi ritrovo
    2000.0000000000000421
    Qualcuno riesce ad aiutarmi a capire cosa stia succedendo.
    Grazie in anticipo
    Paolo Venturelli

===
Avvertenza: Gli allegati ricevuti sono scansionati automaticamente per la ricerca di software malevolo. Nel caso di file o archivi protetti da password potrebbe non essere possibile analizzarne correttamente il contenuto. Si invita, pertanto, ad adottare le cautele previste dalle norme sull'utilizzo della postazione di lavoro.

_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

--
Marco Guiducci - 055 4383194
SITA - Sistema informativo territoriale e ambientale
Regione Toscana - Via di Novoli 26 - 50127 Firenze

"il numero sarà rappresentato "bene" se è una potenza di due. " ho semplificato un po' troppo :slight_smile: (somma di numeri....)
mg

Il 10/11/2021 13:56, Marco Guiducci ha scritto:

succede che nel pc i numeri vengono convertiti in numeri a notazione binaria cioè in base 2 (0 1).
non tutti i numeri (cioè pochi!) appartenenti al campo dei numeri reali possono essere espressi in notazione binaria.
il numero sarà rappresentato "bene" se è una potenza di due.
in special modo, quindi, i numeri in virgola mobile e sarebbe qui lungo scrivere come si rappresenta in binario un tale numero (cerca sul web). il numero memorizzato sarà quindi il numero binario più vicino al numero in bse 10.
mg

Il 10/11/2021 12:38, Paolo Venturelli ha scritto:

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp (che allego).
Se inserisco un nuovo punto, ed inserisco 10.1 nel campo ELEVATION, tutto OK e mi trovo 10,100000000000000, ma se metto 10.2, mi trovo 10,199999999999999
con 10.3 trovo 10,300000000000001, con 10.4 trovo 10,400000000000000, con 10.5 trovo 10,500000000000000, con 10.6 trovo 10,600000000000000 invece con 10.7 trovo 10,699999999999999.
mi piacerebbe capire cosa succede
Grazie a chi saprà aiutarmi

Il giorno mer 10 nov 2021 alle ore 11:54 Paolo Venturelli <venturelli.paolo@gmail.com <mailto:venturelli.paolo@gmail.com>> ha scritto:

Buongiorno, su QGIS 3\.22\.0 WIN 10 Pro, inserisco i valori
manualmente in un campo e mi ritrovo in tabella un valore
leggermente diverso: tipo inserisco 10 e mi ritrovo 10\.000000000324\.
anche per la scala di rappresentazione, io metto 2000 e mi ritrovo
2000\.0000000000000421
Qualcuno riesce ad aiutarmi a capire cosa stia succedendo\.
Grazie in anticipo
Paolo Venturelli

===
Avvertenza: Gli allegati ricevuti sono scansionati automaticamente per la ricerca di software malevolo. Nel caso di file o archivi protetti da password potrebbe non essere possibile analizzarne correttamente il contenuto. Si invita, pertanto, ad adottare le cautele previste dalle norme sull'utilizzo della postazione di lavoro.

_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

--
Marco Guiducci - 055 4383194
SITA - Sistema informativo territoriale e ambientale
Regione Toscana - Via di Novoli 26 - 50127 Firenze

Ciao Paolo,
il campo con cui hai problemi nell'inserimento di valori decimali (ma, suppongo, non con quelli interi, come inizialmente avevi scritto) è un campo in cui è stato impostato il valore 15 come numero di cifre a destra della virgola: tale numero di cifre decimali è oltre il limite delle possibilità di rappresentazione univoca dei numeri in virgola mobile a 64 bit tipico dei computer (standard IEEE754) se ci sono anche 2 cifre a sinistra della virgola da dover rappresentare.

Per esempio il numero decimale 10,1 è rappresentabile in virgola mobile IEEE754 a 64 bit come il numero esadecimale 0x4024333333333333.

Tuttavia il numero esadecimale IEEE754 a 64 bit 0x4024333333333333 non rappresenta solo il valore decimale 10,1 ma anche tutti i valori decimali tra circa 10,0999999999999989 e circa 10,1000000000000005

La più accurata rappresentazione di tale numero esadecimale corrisponde al valore decimale 10,0999999999999996447286321... che, arrotondato a 15 cifre decimali, corrisponde a 10,1

Invece il numero decimale 10,2 è rappresentabile in virgola mobile IEEE754 a 64 bit come il numero esadecimale 0x4024666666666666.

La più accurata rappresentazione di tale numero esadecimale corrisponde al valore decimale 10,1999999999999992894572642... che, arrotondato a 15 cifre decimali, corrisponde a 10,199999999999999.

Per 10,3 -> 0x402499999999999A -> 10,3000000000000007105427357... -> 10,300000000000001

Quindi, il problema è dovuto alla intrinseca limitazione dei numeri in virgola mobile a 64 bit e al fatto che è stato impostato inutilmente un valore di 15 cifre decimali.

Impostando un valore inferiore e più adeguato di cifre decimali, per esempio 3, il problema non si verifica.

Spero di essere stato chiaro.

Ti consiglio di consultare alcune risorse sull'argomento:
https://en.wikipedia.org/wiki/Floating-point_arithmetic
https://en.wikipedia.org/wiki/Double-precision_floating-point_format
https://docs.python.org/3/tutorial/floatingpoint.html
https://blog.demofox.org/2017/11/21/floating-point-precision/

Il 10/11/2021 12:38, Paolo Venturelli ha scritto:

Buongiorno, ho (forse) definito i limiti del mio problema ad uno shp (che allego).
Se inserisco un nuovo punto, ed inserisco 10.1 nel campo ELEVATION, tutto OK e mi trovo 10,100000000000000, ma se metto 10.2, mi trovo 10,199999999999999