%g在ios中给出指数形式的值

时间:2016-06-27 06:15:36

标签: ios objective-c precision

我的要求

有一个标签具有价格值(浮动值)

如果是 - >那应该是

1232.200 - > 1232.2

1232.243 - > 1232.243

1232.00 - > 1232

我到现在为止做了什么

1)使用%。2f

lblPrice.text=[NSString stringWithFormat:@"%.2f",myValue];

但它总是在1232.201232.241232.00等分数之后给出2位数...

2)然后我将%.2f更改为%g

lblPrice.text=[NSString stringWithFormat:@"%g",myValue];

为所有上述要求提供完美价值,但当价值超过某个水平时,它会转换为指数形式。

如果myValue为1189243.609,则结果为1.18924e+06 我不想要..

任何解决方案??? 在此先感谢..

2 个答案:

答案 0 :(得分:2)

我只是测试以下代码,并按照您的要求工作,希望得到帮助:

NSNumberFormatter *NumberFormate = [[NSNumberFormatter alloc] init];
[NumberFormate setRoundingIncrement:[NSNumber numberWithDouble:0.001]];
[NumberFormate setMaximumFractionDigits:4];
[NumberFormate setMinimumFractionDigits:0];

NSLog(@"232.200 IS %@", [NumberFormate stringFromNumber:[NSNumber numberWithFloat:1232.200]]);
NSLog(@"1232.243 IS %@", [NumberFormate stringFromNumber:[NSNumber numberWithFloat:1232.243]]);
NSLog(@"1232.00 IS %@", [NumberFormate stringFromNumber:[NSNumber numberWithFloat:1232.00]]);

它的输出是:

enter image description here

<强>更新

对于你的0.50,如果你想输出像0.5那么只需在现有代码中添加一行,如下所示。

[NumberFormate setNumberStyle:NSNumberFormatterDecimalStyle];

答案 1 :(得分:1)

您可以逐个尝试这两个

lblPrice.text = [NSString stringWithFormat:@"%qi", myValue];

lblPrice.text = [NSString stringWithFormat:@"%.0f", myValue];

或查看以下链接

  

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html