[英]NSDecimalNumber rounding
我会四舍五入像这样的十进制数:
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];
我没有预期的结果。我该如何取整?
我在您的代码中看到2个问题。 首先是数字的创建。 您正在使用,
作为小数点分隔符。 如果您的语言环境未配置为使用,
对于十进制,您的数字将被解析为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];
这是最简单的方法:float f = 4363,65; 整数舍入=(f + 0.5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.