2016-03-25 5 views
0

Ich benutze NSDecimal, weil ich extrem große Werte für meine Anwendung speichern muss. Ich möchte in der Lage sein, die NSDecimalDivide Funktion zu verwenden, um zwei NSDecimals zu teilen und das Ergebnis auf die nächste ganze Zahl zu runden.Wie kann ich NSDecimal auf den nächsten ganzzahligen Wert runden lassen?

NSDecimal testOne = [[NSDecimalNumber decimalNumberWithString:@"1064"] decimalValue]; 
    NSDecimal cost = [[NSDecimalNumber decimalNumberWithString:@"10"]decimalValue]; 
    NSDecimal value; 
    NSDecimalDivide(&value, &testOne, &cost, NSRoundDown); 
    NSString *string = NSDecimalString(&value, _usLocale); 
    NSLog(@"Here is the cost%@",string); 

Dieses out legt 106,4 ich es ausgeben 106 möchte Weiß jemand, wie eine NSDecimal Anzahl dem ganzzahligen Wert runden?

Antwort

2

Eine Möglichkeit, dies zu tun, ist die Verwendung eines NSDecimalNumberHandler mit scale auf 0 festgelegt.

NSDecimalNumber *number1 = [NSDecimalNumber decimalNumberWithString:@"1064"]; 
NSDecimalNumber *number2 = [NSDecimalNumber decimalNumberWithString:@"10"]; 

NSDecimalNumberHandler *behavior = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundDown 
                        scale:0 
                     raiseOnExactness:NO 
                     raiseOnOverflow:NO 
                     raiseOnUnderflow:NO 
                    raiseOnDivideByZero:YES]; 

NSDecimalNumber *result = [number1 decimalNumberByDividingBy:number2 withBehavior:behavior]; 

NSLog(@"Here is the cost %@", result); 

Bitte beachte, dass ich nicht die primitive NSDecimal überhaupt verwenden und ich würde Ihnen die gleiche beraten. Wenn Sie jedoch direkt mit NSDecimal arbeiten möchten, können Sie die praktische Funktion NSDecimalRound verwenden.

3

Wickeln Sie das NSDecimal als NSDecimalNumber auf und verwenden Sie decimalNumberByRoundingAccordingToBehavior:. Damit können Sie die genaue Rundung behavior angeben, die Sie wünschen.

Verwandte Themen