文档确实模棱两可。两者kCFNumberFormatterRoundFloor
和
kCFNumberFormatterRoundDown
都记录为
使用适当的小数位数向下舍入到下一个较大的数字。
一个小测试表明,这些舍入模式对负数给出不同的结果。
kCFNumberFormatterRoundFloor
行为类似于floor()
函数。它总是四舍五入到较小(或相等)的值。另一方面kCFNumberFormatterRoundDown
,“向零”舍入,即它返回一个数字,其绝对值小于或等于输入的绝对值。
示例:(使用NSNumberFormatter
)
NSNumberFormatter *f1 = [[NSNumberFormatter alloc] init];
[f1 setMaximumFractionDigits:0];
[f1 setRoundingMode:NSNumberFormatterRoundFloor];
NSNumberFormatter *f2 = [[NSNumberFormatter alloc] init];
[f2 setMaximumFractionDigits:0];
[f2 setRoundingMode:NSNumberFormatterRoundDown];
double x = -1.5;
NSLog(@"%@, %@", [f1 stringFromNumber:@(x)], [f2 stringFromNumber:@(x)]);
// Output: -2, -1
x = + 3.5;
NSLog(@"%@, %@", [f1 stringFromNumber:@(x)], [f2 stringFromNumber:@(x)]);
// Output: 3, 3
同样,kCFNumberFormatterRoundCeiling
返回一个大于或等于输入的值(如ceil()
),并kCFNumberFormatterRoundUp
“远离零”四舍五入。