数値を。でフォーマットする必要がありますNSNumberFormatter
。数値が小さい場合(例0.000001
)、10進形式で表示されます0.000001
。数値が大きい場合、多くの小数または整数(Eg1211345456
または0.000000011111553242
)が科学的記数法で表示されます1.211 E9
。
私はこのコードを持っていますが(非常に悪いです)、私には十分ではありません:(。解決策はパターンと-setPositiveFormat
フォーマットパターンであると思います、#,##0.0000000
そして0.###E+0
、何かアイデアはありますか?
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];