iOS 字符串与浮点型转换与精度问题
一般字符串转浮点型
NSString *str1 = @"123.12";
float strfloat1= [str floatValue];
float strfloat2=0.5;
NSString *str2 = [NSString stringWithFormat:@"%f",strfloat2];
这里在%f ,这里可以是 @".2f" 标识小数点后保留2位 以此类推
来看一下floatValue的定义:
Discussion
If the receiver is not a text-type cell or the cell value is not scannable, the method returns 0.
如果这个字符串不是text类型 或者 不可扫描,就返回0 比如
@"hello world" 或者中文 返回0
这个能可以帮助你在接收端做很多处理,比如 :
@"000.123" 转成 0.123
@".123 " 转成 0.123
一般来说这个转换类型在iOS开发中有两种情况
第一种是服务端传递解析,用于显示或者运算。
第二种就是输入框接收浮点型做运算或者存储。
先说第一种,如果服务端一般字符串传递,在移动端转成浮点型
比如
NSString*float8str =@"0.94";
float float8 = [float8str floatValue];
double double8 = [float8str doubleValue];
float8 = 0.939999997
double8 = 0.93999999999999994
NSString *str8= [NSString stringWithFormat:@"%f",float8];
str8 = @"0.94"
我们按照精度截取就好 小数点后两位。
第二种,这种应用于textfield等输入框,设置数字键盘,只能输入数字和小数点。
建议转浮点型处理格式,也可以按照小数点按为处理。