[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