[英]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.