如何保持小数点后两位正确?
How to keep two decimal place correct?
在我的测试中,当我使用NSString
的stringWithFormat:@"%.2f"
方法时保留两位小数。
[NSString stringWithFormat:@"%.2f", 9999.999];
结果是:
10000.00
[NSString stringWithFormat:@"%.2f", 9999.99];
结果是:9999.99
[NSString stringWithFormat:@"%.2f", 9999.9912];
结果是:9999.99
我的要求是不管float
是什么,我只想保留两位小数,比如9999.999
-> 9999.99
,不是第一个例子看到的结果,这怎么办?
试试这个代码
1) 在Objective-c
:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:99.9999]];
NSLog(@"numberString - %@",numberString);
2) 在 swift
:
let formatter:NumberFormatter = NumberFormatter.init()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let numberString = formatter.string(from: NSNumber.init(value: 99.9999))
print("numberString - \(numberString!)")
在我的测试中,当我使用NSString
的stringWithFormat:@"%.2f"
方法时保留两位小数。
[NSString stringWithFormat:@"%.2f", 9999.999];
结果是:10000.00
[NSString stringWithFormat:@"%.2f", 9999.99];
结果是:9999.99
[NSString stringWithFormat:@"%.2f", 9999.9912];
结果是:9999.99
我的要求是不管float
是什么,我只想保留两位小数,比如9999.999
-> 9999.99
,不是第一个例子看到的结果,这怎么办?
试试这个代码
1) 在Objective-c
:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:99.9999]];
NSLog(@"numberString - %@",numberString);
2) 在 swift
:
let formatter:NumberFormatter = NumberFormatter.init()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let numberString = formatter.string(from: NSNumber.init(value: 99.9999))
print("numberString - \(numberString!)")