consideri il seguente semplice divisione:Controllo precisione divisione
A=8.868;
A/0.1
ans =
88.679999999999993
Ciò provoca un piccolo errore, a causa di precisione in virgola mobile. C'è un modo per evitare che ciò accada? Fondamentalmente tutto quello che sto facendo è spostare la virgola di una posizione, pur non essendo vicino al numero massimo di cifre consentite in MATLAB.
mi piacerebbe ottenere un risultato come:
A/0.1
ans =
88.68
dove zeri finali sono di alcuna preoccupazione, fintanto che sono a zero, e non contiene un numero al 14 cifre o giù di lì.
È interessante notare che questo problema schiocca anche quando l'arrotondamento a N
cifre:
R = (randi([8659 49847],[1e3 1]))/1e3;
xmin = min(R);
el = 0.1;
step = 1/el;
tmp1=xmin/el;
tmp2=round(tmp1);
tmp3=round(tmp2*el,3);
tmp3 =
8.699999999999999
Solo per curiosità: perché in questo modo? perché non moltiplicare per 10? –
@AnderBiguri perché è nel mio caso la mia dimensione della griglia in centimetri, il che significa che può anche essere ad es. 0,25, 0,12 o qualsiasi cosa il cliente desideri. – Adriaan
@AnderBiguri 'A * 10' è anche impreciso in questo caso ... – Dan