我需要用NSNumberFormatter格式化一個數字。如果數字很小(例如0.000001)將以十進制格式顯示0.000001。如果數字很大,許多小數或整數(例如1211345456或0.000000011111553242)將以科學記數法1.211 E9顯示。我有這個代碼(很糟糕),但對我來說還不夠:(。我認爲解決方案將在-setPositiveFormat和格式模式#,## 0.0000000和0。### E + 0,任何想法?謝謝如何根據長度在DecimalSyle或ScientificStyle中使用NSNumberFormatter格式化數字?
NSNumberFormatter *formato = [[NSNumberFormatter alloc] init];
[formato setNumberStyle:NSNumberFormatterDecimalStyle];
[formato setPositiveFormat:@"#,##0.0000000"];
[formato setNegativeFormat:@"-#,##0.0000000"];
[formato setMaximumFractionDigits:7];
[formato setMinimumFractionDigits:0];
[formato setRoundingMode: NSNumberFormatterRoundHalfDown];
NSString *numero = [formato stringFromNumber:[NSNumber numberWithDouble:valor]];
//si vale después de formatear y el valor inicial es distinto de 0 se va de rango,
//por lo tanto usamos notación científica
if([numero isEqualToString:@"0"] && valor != 0){
//inicializamos el objeto de nuevo para que no de problemas con setPositiveFormat
[formato release];
formato = [[NSNumberFormatter alloc] init];
[formato setNumberStyle:NSNumberFormatterScientificStyle];
[formato setMaximumFractionDigits:4];
[formato setRoundingMode: NSNumberFormatterRoundHalfDown];
[formato setExponentSymbol:@"e"];
numero = [formato stringFromNumber:[NSNumber numberWithDouble:valor]] ;
}
[formato release];
請有任何答案! – Yonedev 2011-05-09 19:21:22