?大家都會在開發(fā)中遇到, 一個(gè) float或者 double 類型的小數(shù)上, 有時(shí)候會有一個(gè)精度的丟失, 造成數(shù)據(jù)不準(zhǔn)確. 尤其是在涉及到一些支付的項(xiàng)目, 都要求比較精確, 所以來說一說NSDecimalNumber, 順便說一下保留小數(shù)的方法,NSDecimalNumberHandle
黃色標(biāo)記處悲雳。改一下 參數(shù)即可
RoundingMode: 小數(shù)保留的類型
根據(jù)官方文檔說明, 枚舉值分析:
NSRoundPlain,? 四舍五入
NSRoundDown,? ? 只舍不入
NSRoundUp,? ? ? 只入不舍
NSRoundBankers
原代碼如下识虚。:
+(NSString *)notRounding:(float)price afterPoint:(int)position{
? ? NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
? ? NSDecimalNumber *ouncesDecimal;
? ? NSDecimalNumber *roundedOunces;
? ? ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
? ? roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
? ? return [NSString stringWithFormat:@"%@",roundedOunces];
}