舍入双精度值到2位小数

tes*_*dtv 87 iphone cocoa-touch objective-c

我有一个双倍值22.368511我想将它舍入到2位小数.即它应该返回22.37

我怎样才能做到这一点?

Jas*_*ers 187

与大多数语言一样,格式为

%.2f
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到更多的例子


编辑:如果你担心在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]]);
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

  • 在iOS上,我不得不使用`setPositiveFormat:`,因为`setFormat:`方法不存在(仅为Mac定义),但仍然 - 很好的答案,节省了我几个小时的实验,所以+1和非常感谢你:) (13认同)

Sai*_*n K 70

您可以使用以下代码将其格式化为两位小数

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
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

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

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

print(str)
Run Code Online (Sandbox Code Playgroud)

  • 在swift 4中:让str = String(描述:formatter.string(来自:12.2345)!) (2认同)

kra*_*ter 28

 value = (round(value*100)) / 100.0;
Run Code Online (Sandbox Code Playgroud)

  • 我相信这是最正确的答案 - 他要求绕过它 - 不要在最后将它转换成一个字符串(或者之后再进行双重转换). (5认同)

Tig*_*ing 15

[label setText:@"Value: %.2f", myNumber];
Run Code Online (Sandbox Code Playgroud)


Fru*_*eek 11

您可以使用NSDecimalRound函数


Cla*_*nas 11

在Swift 2.0和Xcode 7.2中:

let pi:Double = 3.14159265358979
String(format:"%.2f", pi)
Run Code Online (Sandbox Code Playgroud)

例:

在此输入图像描述


Rad*_*che 6

要从double中删除小数,请查看此输出

对象C.

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

输出将是:

10.02 
10
Run Code Online (Sandbox Code Playgroud)

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))
Run Code Online (Sandbox Code Playgroud)

输出将是:

3.14 
3
Run Code Online (Sandbox Code Playgroud)