关于NSString转float类型的问题(对商品价格UILabel显示保留小数位数-四舍不入)

灵感来自这里

现做如下优化:要求保留最多两位小数,且四舍不入,若第二位小数为0则去掉,若两位小数都为0则只保留整数部分

-(void)test{

/*
 string 类型转float后,小数点后面会多出几位数,这样我进行,大小比较时就出问题,
 比如 string = @"10.01"
 转成 float后, 有的会变成10.01001
 有时好像会变成,10.009999
 ---转成双精度浮点型double可解决:
 */

//float num = 99.001;
double num = [@"99.105900" doubleValue];  //用双精度浮点型double解决
NSLog(@"doubleValue---%lf",num);

NSNumber *number = @(num);
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.roundingMode = NSNumberFormatterRoundFloor;
formatter.maximumFractionDigits = 2;  //保留最多两位小数(99.00->99;99.01->99.01;99.10->99.1)
NSLog(@"字符串最多保留两位小数且四舍不入--%@", [formatter stringFromNumber:number]); // 99.99
NSLog(@"字符串保留两位小数且四舍五入--%.2lf", num); // --100.00

}

你可能感兴趣的:(关于NSString转float类型的问题(对商品价格UILabel显示保留小数位数-四舍不入))