Hey,
ich habe grad keine Ahnung wie ich einen Float auf zwei Kommastellen runden kann...
Ich finde keine passende Funktion nichts...
Wenn nicht anders muss ich wieder selber was basteln wie ich das schon vorher machte
Hoffe es findet sich was.
Hey,
ich habe grad keine Ahnung wie ich einen Float auf zwei Kommastellen runden kann...
Ich finde keine passende Funktion nichts...
Wenn nicht anders muss ich wieder selber was basteln wie ich das schon vorher machte
Hoffe es findet sich was.
Naja , Ich habe das gerade mal probiert. Das Problem ist, wie Gleitkommazahlen verarbeiten werden.
stock Float:irgendwas( Float:fValue , iNachkomma = 2 ) {
new
Float:fReturn,
sString[16];
format( sString , sizeof(sString) ,"%.*f", iNachkomma , fValue);
fReturn = floatstr( sString );
return fReturn;
}
Weil Float: ein Tag ist, musst du die Funktion erst deklarieren bevor du sie nutzt. Sonst gibt es Fehlermeldungen. Als public wäre es auch möglich, dann muss die Funktion aber per forward erst deklariert werden, bevor du sie nutzt.
Im Prinzip funktioniert das so , ich zeig dir aber mal ein Fälle, wo es nicht richtig klappt. Das wirst du aber auch nicht beheben können:
printf(" %f ", irgendwas( 1.23456789 , 3 ) ); // 1.23399 - nicht gewünschtes Ergebnis
printf(" %.3f ", irgendwas( 1.23456789 , 3 ) ); // 1.233 - nicht gewünschtes Ergebnis
printf(" %f ", irgendwas( 1.43500000 , 3 ) ); // 1.434 - nicht gewünschtes Ergebnis
printf(" %f ", irgendwas( 1.12345678 , 3 ) ); // 1.123000
printf(" %f ", 1.234 ); // 1.23399 - nicht gewünschtes Ergebnis
WIe du siehst, klappt da etwas nicht. Da kannst du aber nichts gegen machen, liegt an der Verarbeiung von Gleitkommazahlen. Exakt wirst du es in vielen Fälle nicht bekommen.