Definition at line 45 of file str.cpp.
45 {
46 float result = 0.0f;
47 float sign = 1.0f;
48 float fraction = 0.0f;
49 float divisor = 1.0f;
50 int isFractional = 0;
51
53
54
55 if (len == 0) {
56 return 0.0f;
57 }
58
59
60 while (
pos < len && (str[
pos] ==
' ' || str[
pos] ==
'\t' || str[
pos] ==
'\n' || str[
pos] ==
'\r' || str[
pos] ==
'\f' || str[
pos] ==
'\v')) {
62 }
63
64
65 if (
pos < len && str[
pos] ==
'-') {
66 sign = -1.0f;
68 }
else if (
pos < len && str[
pos] ==
'+') {
70 }
71
72
74 if (str[
pos] >=
'0' && str[
pos] <=
'9') {
75 if (isFractional) {
76 divisor *= 10.0f;
77 fraction += (str[
pos] -
'0') / divisor;
78 } else {
79 result = result * 10.0f + (str[
pos] -
'0');
80 }
81 }
else if (str[
pos] ==
'.' && !isFractional) {
82 isFractional = 1;
83 } else {
84
85 break;
86 }
88 }
89
90
91 result = result + fraction;
92
93
94 return sign * result;
95}
References pos.
Referenced by fl::StringFormatter::parseFloat().