1

我有一个代表浮点数的字符串,例如2400.0. 我想将其格式化为数字(2,400.0),我需要在数字符号后保留零。

NSString* theString = @"2400.0"; 

// I convert the string to a float 
float f = [theString floatValue]; 
// here I lose the digit information :( and it ends up with 2400 instead of 2400.0

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesSignificantDigits:YES];
[formatter setMinimumFractionDigits:1];
[formatter setMaximumFractionDigits:2];
[formatter setLocale:[NSLocale currentLocale]];

NSString *result = [formatter stringFromNumber:@(f)];

NSLog需要的result时候2,4002,400.0

如何获得正确的字符串?

4

4 回答 4

4

您可能希望将 设置minimumFractionDigits为 1(maximumFractionDigits在这种情况下也是如此)。

您也可能不想使用有效数字。以下代码产生所需的输出:

NSString *theString = @"2400.0";

float f = [theString floatValue];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:1];
[formatter setMaximumFractionDigits:1];
[formatter setLocale:[NSLocale currentLocale]];

NSLog(@"%@", [formatter stringFromNumber:@(f)]);
于 2014-01-31T08:57:06.500 回答
0

下面的te解决了这个问题

NSString *formatString = @"0,000.0";
[formatter setPositiveFormat:formatString];

小数点后 0 的数量将用于格式化。它也适用于负数。

您应该根据小数点前后浮点值的位数动态更改格式字符串。

希望能帮助到你。

于 2014-01-31T09:37:33.423 回答
0

简单的,

然后你去显示它只是这样做:

myLabel.text = @"%0.1f", f;
于 2014-08-01T14:39:59.143 回答
0

minimumFractionDigits除了使用maximumFractionDigits

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.minimumFractionDigits = 1;
formatter.maximumFractionDigits = 1;

XCTAssert([[formatter stringFromNumber:@(2400.0)] isEqualToString:@"2400.0"]);
XCTAssert([[formatter stringFromNumber:@(2400.1)] isEqualToString:@"2400.1"]);
于 2018-06-23T20:42:43.253 回答