无效 RoundOffTest(双数) { // 为了得到这个输出,你会将什么值传递给 RoundOffTest(): // BEFORE number=1.785000 round=178.000000(向下取整) // 后数字=1.785000 舍入=179.000000(向上舍入) // // 它似乎向下舍入。 // 但是第二行似乎将它向上取整。 // 这不是不可能的吗?难道没有可能的数字你可以通过吗 // 这个函数,看到那个输出了吗?或者有吗? NSLog(@"BEFORE number=%f round=%f (round down)", number, round(number * 100)); 双倍数 = 1.785000; NSLog(@"AFTER NUMBER=%f round=%f (round up)", NUMBER, round(NUMBER * 100)); }
问问题
165 次
1 回答
0
设置number
为1.7849995
,你会得到你看到的结果。请注意,%f
它打印了 6 个小数位,并且输出被四舍五入到那个位数 - 所以1.7849994
不起作用。
不四舍五入的格式化
要回答您的评论问题:使用NSNumberFormatter
. 我认为所有的printf
样式格式化程序都是圆形的。NSNumberFormatter
提供7种不同的舍入模式。这是您的测试功能的修改版本:
void RoundOffTest(double number)
{
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setFormat:@"0.000000"]; // see docs for format strings
[formatter setRoundingMode:NSNumberFormatterRoundFloor]; // i.e. truncate
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithDouble:number]];
NSLog(@"%@\n", formatted);
[formatter release];
}
于 2011-04-16T04:38:13.033 回答