我想用这样的十进制数来舍入:
4363,65 -> 4364
我试过这样做:
NSDecimalNumber *decimalNumber = [NSDecimalNumber decimalNumberWithString@"4363,65"];
NSDecimalNumberHandler *behav = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundPlain scale:NSDecimalNoScale
raiseOnExactness:YES
raiseOnOverflow:YES
raiseOnUnderflow:YES
raiseOnDivideByZero:YES];
NSDecimalNumber *roundedDecimal = [decimalNumber decimalNumberByRoundingAccordingToBehavior:behav];我没有预期的result.How,我可以绕过它吗?
发布于 2015-06-10 11:58:28
我在你的代码中看到了两个问题。首先是数字的创建。您正在使用,作为小数分隔符。如果您的区域设置没有配置为对小数使用,,则您的数字将被解析为4363。这可能就是发生的事。
第二个问题是scale参数的值。它接受十进制数,但您使用的是一个常量NSDecimalNoScale,它实际上等于SHRT_MAX。这不是你想要的。
//make sure you use the correct format depending on your locale
NSDecimalNumber *decimalNumber = [NSDecimalNumber decimalNumberWithString:@"4363.65"];
NSDecimalNumberHandler *behav = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundPlain
scale:0
raiseOnExactness:YES
raiseOnOverflow:YES
raiseOnUnderflow:YES
raiseOnDivideByZero:YES];发布于 2015-06-10 12:08:52
这是最简单的方法:浮动f= 4363,65;整数圆形= (f + 0.5);
https://stackoverflow.com/questions/30755459
复制相似问题