我正在为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 。
答案 0 :(得分:3)
我可能会建议使用NSNumberFormatter
,这不仅可以让您指定minimumFractionDigits
和minimumFractionDigits
,还可以尊重用户的本地化偏好(例如在德国,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"
。