So jetzt habe ich den folgenden Code:Format NSDecimalNumber Währungs durch Ländercode ohne Verlust an Präzision
- (NSString*)convertToLocalCurrencyFormat:(NSDecimalNumber*)result {
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.currencyCode = self.comparisonCurrency;
formatter.usesSignificantDigits = YES;
return [formatter stringFromNumber:result];
}
Wenn ich in einem NSDecimalNumber*
passieren 678071967196719797153475347466.94627863
enthält, wird es zu ¥678,072,000,000,000,000,000,000,000,000
formatiert (mit dem currencyCode
eingestellt auf JPY
). Wenn ich die formatter.usesSignificantDigits = YES
Zeile weglassen, dann wird es auf ¥678,071,967,196,719,797,153,475,347,467
, näher, aber immer noch die dezimalen und folgenden Werte fallen formatiert.
Allerdings, wenn ich in 6780.0416000000012517376
passieren, ist es richtig-¥6,780.04
mit der signifikanten Stellen Zeile formatiert. Es wird auf ¥6,780
ohne die signifikante Ziffernzeile formatiert.
Ich weiß, dass NSNumberFormatter jede NSNumber als Parameter aufnehmen kann, aber nur so genaue Werte wie doubles verarbeiten kann, so dass NSDecimalNumber keine Fehler und falsche Ergebnisse hat.
Wie kann ich NSDecimalNumbers mit Währungscodes ohne Genauigkeitsverlust formatieren?
Dank
, der wie ein Charme, danke! –