22.368511 olarak çift değerim var, onu 2 ondalık basamağa yuvarlamak istiyorum. yani 22.37 döndürmelidir
Bunu nasıl yapabilirim?
22.368511 olarak çift değerim var, onu 2 ondalık basamağa yuvarlamak istiyorum. yani 22.37 döndürmelidir
Bunu nasıl yapabilirim?
Yanıtlar:
Çoğu dilde olduğu gibi, format
%.2f
burada daha fazla örnek görebilirsiniz
Düzenleme : 25.00 vakalarında noktanın gösterilmesiyle ilgili endişeleriniz varsa bunu da aldım.
{
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.3]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.0]]);
}
2010-08-22 15:04:10.614 a.out[6954:903] 25.34
2010-08-22 15:04:10.616 a.out[6954:903] 25.3
2010-08-22 15:04:10.617 a.out[6954:903] 25
setPositiveFormat:
, çünkü setFormat:
yöntem yoktu (sadece Mac için tanımlanmıştı), ama yine de - harika cevap, bana saatler süren deneylerden kurtardı, bu yüzden +1 ve senin sayende çok teşekkürler :)
İki ondalık basamağa biçimlendirmek için aşağıdaki kodu kullanabilirsiniz
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:22.368511]];
NSLog(@"Result...%@",numberString);//Result 22.37
Swift 4:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .up
let str = String(describing: formatter.string(from: 12.2345)!)
print(str)
value = (round(value*100)) / 100.0;
[label setText:@"Value: %.2f", myNumber];
NSDecimalRound işlevini kullanabilirsiniz
Ondalık sayıları çiftinizden çıkarmak için bu çıktıya bir göz atın
Obj C
double hellodouble = 10.025;
NSLog(@"Your value with 2 decimals: %.2f", hellodouble);
NSLog(@"Your value with no decimals: %.0f", hellodouble);
Çıktı şu şekilde olacaktır:
10.02
10
Swift 2.1 ve Xcode 7.2.1
let hellodouble:Double = 3.14159265358979
print(String(format:"Your value with 2 decimals: %.2f", hellodouble))
print(String(format:"Your value with no decimals: %.0f", hellodouble))
Çıktı şu şekilde olacaktır:
3.14
3
Jason'ın cevabıyla gidecektim ama benim Xcode sürümümde (4.3.3) bunu yapamayacağımı fark ettim. bu yüzden biraz araştırmadan sonra, son zamanlarda sınıf yöntemlerini değiştirdiklerini ve tüm eskileri kaldırdıklarını öğrendim. işte bunu nasıl yapmam gerekti:
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:2];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
NSNumber * aNumber = [NSNumber numberWithDouble: number] kullanın; NSNumber yerine * aNumber = [NSNumber numberWithFloat: number];
+(NSString *)roundToNearestValue:(double)number
{
NSNumber *aNumber = [NSNumber numberWithDouble:number];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setUsesGroupingSeparator:NO];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMinimumFractionDigits:0];
NSString *string = [numberFormatter stringFromNumber:aNumber];
return string;
}
Swift için Foundation'ı içe aktaramıyorsanız, round () kullanın ve / veya String istemiyorsanız (genellikle Playground'da olduğunuzda geçerli olan) basit bir çözüm var:
var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber) / 1000.0
sonuç: 31.726
Umberto Raimondi tarafından yayınlanan Double tipi genişletme çözümünü kullanıyorum :
extension Double {
func roundTo(places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Bunu yapabilirsin:
NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setFormat:@0.00"];
// test
NSNumber* a = @12;
NSString* s = [f stringFromNumber:a];
NSLog(@"%@", s);