项目开发的过程中经常会涉及到钱的问题,涉及到钱的地方,显示的时候一般是要求精确到分的,就是两位小数(例如:¥9.99)。但是由于系统的原因,有的时候显示的并非预期的结果,比如¥99.9显示成了¥99.9000001。
打印请求数据一看,控制台显示的就是 99.9000001
,一开始以为是服务器返回出错了,但是和android的一对比,就会发现这其实是iOS平台的解析的问题。遇到这种情况,就需要我们自己进行数据的转化,以达到预期的结果,代码如下:
NSString的一个类别方法
/** 字符串小数格式化
@return 小数字符串 */
- (NSString *)decimalNumberString {
NSString *numberString = [NSString stringWithFormat:@"%lf",[self doubleValue]];
return [NSString stringWithFormat:@"%@",[NSDecimalNumber decimalNumberWithString:numberString]];
}
如果涉及到乘积,则相乘的结果也要做如上的转换,否则乘积的结果还是可能出现小数点后面很多位小数的问题。
温馨提示:计算涉及到金额的地方,最好使用
double
来接收,不要使用float
或者CGFloat
类型,后两者会出现莫名其妙的显示!