2 Stimmen

floor double um eine Dezimalstelle

Ich möchte ein Double um seine Dezimalstelle mit variabler Dezimallänge (in iphone sdk) unterbieten.

Hier einige Beispiele, um Ihnen zu zeigen, was ich meine

NSLog(@"%f",[self floorMyNumber:34.52462 toPlace:2); // should return 34.52
NSLog(@"%f",[self floorMyNumber:34.52662 toPlace:2); // should return 34.52

NSLog(@"%f",[self floorMyNumber:34.52432 toPlace:3); // should return 34.524
NSLog(@"%f",[self floorMyNumber:34.52462 toPlace:3); // should return 34.524

NSLog(@"%f",[self floorMyNumber:34.12462 toPlace:0); // should return 34.0
NSLog(@"%f",[self floorMyNumber:34.92462 toPlace:0); // should return 34.0

Haben Sie eine Idee, wie man das machen kann?

Lösung

-(double)floorNumberByDecimalPlace:(float)number place:(int)place {
    return (double)((unsigned int)(number * (double)pow(10.0,(double)place))) / (double)pow(10.0,(double)place);
}

1voto

Quonux Punkte 2869

Eine andere Lösung:

platziert ist 10 (Beispiel: 13,1), 100 (Beispiel: 12,31) und so weiter

double value = (double)((unsigned int)(value * (double)placed)) / (double)placed

0voto

arsenm Punkte 2853

Wenn Sie sie nur runden wollen, um sie auszudrucken, tun Sie dies mit den standardmäßigen printf-Formatspezifikationen. Anstelle von "%f" könnten Sie zum Beispiel "%.3f" verwenden, um 3 Dezimalstellen auszugeben.

0voto

Verwenden Sie sprintf (oder besser snprintf), um es in eine Zeichenkette zu formatieren, und schneiden Sie das Ende der Zeichenkette ab.

0voto

zneak Punkte 129366

Multiplizieren Sie ihn mit 10^(Dezimalstellen), wandeln Sie ihn in eine ganze Zahl um und teilen Sie ihn dann durch 10^(Dezimalstellen).

double floorToPlace(double number, int places)
{
    int decimalPlaces = 1;
    for (int i = 0; i < places; i++) divideBy *= 10;

    return (int)(number * decimalPlaces) / (double)decimalPlaces;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X