iOS 字符串與浮點(diǎn)型轉(zhuǎn)換與精度問(wè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位? 以此類推
來(lái)看一下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
一般來(lái)說(shuō)這個(gè)轉(zhuǎn)換類型在iOS開(kāi)發(fā)中有兩種情況
第一種是服務(wù)端傳遞解析帘瞭,用于顯示或者運(yùn)算捏悬。
第二種就是輸入框接收浮點(diǎn)型做運(yùn)算或者存儲(chǔ)岸蜗。
先說(shuō)第一種蝎毡,如果服務(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ù)字鍵盤(pán)荡碾,只能輸入數(shù)字和小數(shù)點(diǎn)。
建議轉(zhuǎn)浮點(diǎn)型處理格式局装,也可以按照小數(shù)點(diǎn)按為處理坛吁。