Ist es möglich, einen "genauen" Wert zu erhalten? - Seite 5

 
WePlexus:
Ja, und der Taschenrechner sagt 0,09*5=0,45. :)

muss einfach normalisiert werden:

//double d=0.019999999999999999;
double d=NormalizeDouble(0.09*5,2);
double e=(int)(d*100)/100.0;
Print("e=",e);
 
abolk:

Nun, Sanyok, du bist ein Lügner.

Meine Funktion:

=0.44.
Ich habe Ihre nicht überprüft.)
 
abolk:

Die Normalisierung muss nur noch durchgeführt werden:

auch eine Option )))

und was hat es mit der Nummer auf sich? )))

0.01999999999999999999
 
sanyooooook:

auch eine Option )))

und was hat es mit der Nummer auf sich? )))

Dies ist die maximale Zahl, mit der die Normalisierung funktioniert:

double d=NormalizeDouble(0.01999999,18);
double e=(int)(d*100)/100.0;
Print("e=",e);

Wenn Sie eine weitere 9 nehmen, wird sie auf 0,02 normalisiert.

 
abolk:

ist die Höchstzahl, bei der eine Normalisierung stattfindet:

Wenn du noch eine 9 nimmst, normalisiert sich der Wert auf 0,02.
nicht abschneiden.)
 
sanyooooook:
die Zahl nicht abschneiden.)
was auch immer - das Genauigkeitsformat von NormalizeDouble() ist 0-8
 
abolk:
also seitwärts -- das Format der Genauigkeit in NormalizeDouble() -- 0-8
also ist es bereits seitwärts))
 
sanyooooook:
das war's, es ist alles dasselbe))

wir sind bereits beim "Kern des Problems" angelangt - deshalb "bereits"

zuerst die Zerlegung des Problems -- dann die Zusammensetzung des Problems

oder gibt es noch einige offene Fragen?

 
abolk:

wir sind bereits beim "Kern des Problems" angelangt - deshalb "bereits"

zuerst die Zerlegung des Problems -- dann die Zusammensetzung des Problems

oder gibt es noch einige ungeklärte Punkte?

ja )

wie man dieselbe Funktion (z. B. die, die Sie geschrieben haben) verwendet, um eine beliebige Eingabe auf die richtige Anzahl von Ziffern abzuschneiden:

selbst wenn es das hier ist:

0.01999999999999999999

oder dies:

0.09*5
 
sanyooooook:

ja )

wie man mit der gleichen Funktion eine beliebige Zahl auf die richtige Anzahl von Ziffern abschneidet:

selbst wenn es das hier ist:

oder dies:

Um dieses Problem zu lösen, muss 0,09*5 =0,45 sein, nicht =0,44999999999999999

und wenn es so etwas nicht gibt, dann ist das Problem unlösbar