對有一個電商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;
}
產品需求的小數保留兩位,只入不捨,用上面的代碼可以輕鬆實現,希望可以幫到你!