使用哪种格式说明符或如何实现以下

时间:2015-02-19 19:55:57

标签: ios objective-c string-formatting

我正在为iOS制作计算器应用程序。当我划分整数时Eg:10/4我得到2.5的结果,这正是我所期望的,因为我不想要任何额外的0拖尾我的结果(如2.50000)。我使用%g作为格式说明符。但这会导致另一个问题,例如当我执行10/3时我得到3.33333现在我对此感到不满,理论上我应该得到3.3333333333(重复小数,当我做22/7时也一样)这就是我想要的计算器显示这种情况。

所以我的问题是,使用哪种格式说明符来获得10/4 = 2.5和10/3 = 3.3333333333?或者如何实现这种行为?

我已经提到了here

2 个答案:

答案 0 :(得分:3)

我可能会建议使用NSNumberFormatter,这不仅可以让您指定minimumFractionDigitsminimumFractionDigits,还可以尊重用户的本地化偏好(例如在德国,2.5表示为“2, 5" )。

NSArray *numbers = @[@(5.0 / 2.0), @(10.0 / 3.0)];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle; // if you don't want 1000's separator, perhaps use NSNumberFormatterNoStyle
formatter.minimumFractionDigits = 1;
formatter.maximumFractionDigits = 5;

for (NSNumber *number in numbers) {
    NSLog(@"%@", [formatter stringFromNumber:number]);
}

答案 1 :(得分:0)

获取double结果,然后使用[NSString stringWithFormat:@"%.6f"]或类似的东西将其转换为NSString - 这取决于您想要显示的位数。

然后,您只需从字符串中删除最后N个零。这会将@"2.500000"转换为@"2.5",将@"3.333333"转换为@"3.333333"