iOS 字符串與浮點(diǎn)型轉(zhuǎn)換與精度問題
一般字符串轉(zhuǎn)浮點(diǎn)型
NSString *str1 = @"123.12";
float? strfloat1= [str floatValue];
float strfloat2=0.5;
NSString *str2 = [NSString stringWithFormat:@"%f",strfloat2];
這里在%f ,這里可以是 @".2f"? 標(biāo)識(shí)小數(shù)點(diǎn)后保留2位? 以此類推
來看一下floatValue的定義:
Discussion
If the receiver is not a text-type cell or the cell value is not scannable, the method returns 0.
如果這個(gè)字符串不是text類型 或者 不可掃描,就返回0? 比如
?@"hello world" 或者中文 返回0?
這個(gè)能可以幫助你在接收端做很多處理,比如 :
?@"000.123" 轉(zhuǎn)成 0.123
?@".123?" 轉(zhuǎn)成? 0.123
一般來說這個(gè)轉(zhuǎn)換類型在iOS開發(fā)中有兩種情況
第一種是服務(wù)端傳遞解析,用于顯示或者運(yùn)算。
第二種就是輸入框接收浮點(diǎn)型做運(yùn)算或者存儲(chǔ)。
先說第一種,如果服務(wù)端一般字符串傳遞,在移動(dòng)端轉(zhuǎn)成浮點(diǎn)型
比如
?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"
我們按照精度截取就好 小數(shù)點(diǎn)后兩位。
第二種,這種應(yīng)用于textfield等輸入框,設(shè)置數(shù)字鍵盤,只能輸入數(shù)字和小數(shù)點(diǎn)。
建議轉(zhuǎn)浮點(diǎn)型處理格式,也可以按照小數(shù)點(diǎn)按為處理。