Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用哪种格式说明符或如何实现以下目标_Ios_Objective C_String Formatting - Fatal编程技术网

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

Ios 使用哪种格式说明符或如何实现以下目标,ios,objective-c,string-formatting,Ios,Objective C,String Formatting,我正在为iOS制作一个计算器应用程序。当我除以整数时,例如:10/4,我得到的结果是2.5,这正是我所期望的,因为我不希望任何额外的0跟踪我的结果(比如2.50000)。我已使用%g作为格式说明符。但这导致了另一个问题,例如当我执行10/3时,我得到3.33333,现在我对此感到不高兴,因为理论上我应该得到3.3333(循环小数,当我执行22/7时也是如此),这是我希望我的计算器在这种情况下显示的 所以我的问题是,使用哪种格式说明符来获取10/4=2.5和10/3=3.3333?或者如何实现这样

我正在为iOS制作一个计算器应用程序。当我除以整数时,例如:10/4,我得到的结果是2.5,这正是我所期望的,因为我不希望任何额外的0跟踪我的结果(比如2.50000)。我已使用%g作为格式说明符。但这导致了另一个问题,例如当我执行10/3时,我得到3.33333,现在我对此感到不高兴,因为理论上我应该得到3.3333(循环小数,当我执行22/7时也是如此),这是我希望我的计算器在这种情况下显示的

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


我已经提到了

获取双精度结果,然后使用
[nsstringwithformat:@“%.6f”]
或类似的方法将其转换为NSString-这取决于要显示的位数


然后,您可以简单地从字符串中删除最后N个零。这会将
@“2.500000”
转换为
@“2.5”
并将
@“3.333333”
转换为
@“3.333333”

我可能建议使用
NSNumberFormatter
,这不仅允许您指定
最小分数位数
最小分数位数
,而且还尊重用户的本地化偏好(例如,在德国,2.5表示为“2,5”)


恐怕在这种情况下,这不是正确的解决方案。如果我使用“%.6f”,那么当我除以10/4时,我将得到“2.500000”我想要2.5,因为这是计算器用户可读的数字。但当我做10/3时,我应该得到3.3333。因为这是一个循环分数,用户应该知道它。为什么不投票,这似乎是一个真正的问题,对我来说是一个特殊的需要。请让我知道。谢谢。
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]);
}