it-swarm-ru.tech

Круглое двойное значение до 2 знаков после запятой

У меня есть двойное значение как 22.368511 Я хочу округлить его до 2 десятичных знаков. то есть он должен вернуть 22,37

Как я могу это сделать?

87
testndtv

Как и в большинстве языков, формат

%.2f

вы можете увидеть больше примеров здесь


Редактировать : Я также получил это, если вы обеспокоены отображением точки в случаях 25.00

{
    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
186
Jason Rogers

Вы можете использовать код ниже, чтобы отформатировать его до двух десятичных знаков

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

Свифт 4:

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .up

let str = String(describing: formatter.string(from: 12.2345)!)

print(str)
69
Saikiran K
 value = (round(value*100)) / 100.0;
28
krafter
[label setText:@"Value: %.2f", myNumber];
15
TigerCoding

В Swift 2.0 и Xcode 7.2:

let pi:Double = 3.14159265358979
String(format:"%.2f", pi)

Пример:

enter image description here

11
Claudio Guirunas

Вы можете использовать функцию NSDecimalRound

11
Fruity Geek

Чтобы удалить десятичные дроби из вашего двойника, посмотрите на этот вывод

Obj C

double hellodouble = 10.025;
NSLog(@"Your value with 2 decimals: %.2f", hellodouble);
NSLog(@"Your value with no decimals: %.0f", hellodouble);

Результат будет:

10.02 
10

Swift 2.1 и 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))

Результат будет:

3.14 
3
6
Radu Ursache

Я собирался пойти с ответом Джейсона, но заметил, что в Моей версии Xcode (4.3.3) я не мог этого сделать. поэтому после небольшого исследования я обнаружил, что они недавно изменили методы класса и удалили все старые. вот как я должен был это сделать:

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];

[fmt setMaximumFractionDigits:2];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
4
Kit Ramos

Для Swift есть простое решение, если вы не можете импортировать Foundation, использовать round () и/или не хотите String (обычно это происходит, когда вы находитесь на игровой площадке):

var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber) / 1000.0

результат: 31.726

2
Paula Hasstenteufel

Использовать NSNumber * aNumber = [NSNumber numberWithDouble: number]; вместо NSNumber * 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;
}
2
Coder_A_D

Вы могли бы сделать это:

NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setFormat:@0.00"];

// test
NSNumber* a = @12;
NSString* s = [f stringFromNumber:a];
NSLog(@"%@", s);
0
Hoang Minh