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

Andrea Giudiceandrea andreaerdna a libero.it
Mer 10 Nov 2021 05:07:54 PST


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


Maggiori informazioni sulla lista QGIS-it-user