Iphone 使用NSNumberFormatter而不使用字符串对数字进行舍入

Iphone 使用NSNumberFormatter而不使用字符串对数字进行舍入,iphone,objective-c,rounding,nsnumberformatter,Iphone,Objective C,Rounding,Nsnumberformatter,这看起来很简单,但我看不出NSNumberFormatter有一个奇怪的函数。我有一个数字,比如说4.1。我想把它四舍五入到5。我想如果我使用NSNumberFormatter并将roundingMode设置为NSNumberFormatterRoundUp,我会得到想要的结果。但我现在似乎唯一能让数字取整的方法是stringFromNumber或numberFromString。奇怪的是,我就是记不住这个数字 我知道我可以把字符串转换成数字,但这似乎是一种浪费。想知道是否有不同的方法(如果数字

这看起来很简单,但我看不出NSNumberFormatter有一个奇怪的函数。我有一个数字,比如说4.1。我想把它四舍五入到5。我想如果我使用NSNumberFormatter并将roundingMode设置为NSNumberFormatterRoundUp,我会得到想要的结果。但我现在似乎唯一能让数字取整的方法是stringFromNumber或numberFromString。奇怪的是,我就是记不住这个数字

我知道我可以把字符串转换成数字,但这似乎是一种浪费。想知道是否有不同的方法(如果数字是4.1,round()就不会取整),或者是否有一个方法我错过了查看类ref


干杯

您可以使用标准的c函数
ceil

CGFloat number = 4.1;
CGFloat roundedUp = ceil( number ); // Will be 5.0

您可以使用标准的c函数
ceil

CGFloat number = 4.1;
CGFloat roundedUp = ceil( number ); // Will be 5.0

您可以在Objective C中使用本机C函数。您需要的是
ceil()
。如果您已经有一个
NSNumber
,您可以使用对象方法,例如
floatValue
来获取本机C
float

float num = [ns_number floatValue];
num = ceil(num);

您可以在Objective C中使用本机C函数。您需要的是
ceil()
。如果您已经有一个
NSNumber
,您可以使用对象方法,例如
floatValue
来获取本机C
float

float num = [ns_number floatValue];
num = ceil(num);

o_o’。。。。你有什么理由想从4.1轮到5轮?只是好奇。您不希望数字超过4.5,那么第5轮?格式化程序总是用于将数据与字符串进行转换。可能有一个库函数可以满足您的需要,我会快速查看一下,但现在您的标题要求的是一些不合理的东西。@Pavan-它是用于UI目的的,如果它的4.1我需要5行,如果它的3.9我需要4行,那么“。。。。你有什么理由想从4.1轮到5轮?只是好奇。您不希望数字超过4.5,那么第5轮?格式化程序总是用于将数据与字符串进行转换。可能有一个库函数可以满足您的需要,我会快速查看一下,但现在您的标题要求的是一些不合理的东西。@Pavan-它是用于UI目的的,如果它的4.1我需要5行,如果它的3.9我需要4行确保
number
是一个浮点,而不是NSNumber。否则,请使用
[number floatValue]
。干杯,非常有魅力。但是,由于我所有的数字都是int,所以我困惑了一秒钟,将1改为double,这样它就可以正确计算了。但是,请确保
number
是一个浮点数,而不是一个NSNumber。否则,请使用
[number floatValue]
。干杯,非常有魅力。有一秒钟我很困惑,因为我所有的数字都是整数,所以我把一改成了双精度,这样就可以正确计算了