对有一个电商APP来说,显示商品价格是最寻常不过了,但是有一个问题,就是小数显示时精准度的问题,为此,苹果官方有一个API可以解决此问题。
NSDecimalNumber,可以设置精准度,其有几个属性可以设置,如下:
NSRoundPlain, // Round up on a tie //貌似取整
NSRoundDown, // Always down == truncate //只舍不入
NSRoundUp, // Always up // 只入不舍
NSRoundBankers // on a tie round so last digit is even 貌似四舍五入
下面给出一个本人项目中用到代码范例:
/**
* @brief 截取指定小数位的值
*
* @param price 需要转化的数据
* @param position 有效小数位
*
* @return 截取后数据
*/
+ (NSDecimalNumber *)notRounding:(NSString *)price
{
NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundUp scale:0 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
//固定12期,先计算出每期金额
NSDecimalNumber* priceNum=[NSDecimalNumber decimalNumberWithString:price];
NSDecimalNumber* formatPrice=[priceNum decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:@"12"] withBehavior:roundingBehavior];
return formatPrice;
}
产品需求的小数保留两位,只入不舍,用上面的代码可以轻松实现,希望可以帮到你!


3497

被折叠的 条评论
为什么被折叠?



