Index: core/fxcrt/fx_basic_util.cpp |
diff --git a/core/fxcrt/fx_basic_util.cpp b/core/fxcrt/fx_basic_util.cpp |
index b9cf470d08a299f0328bb279274266e853ff51a5..12d3aefd1c2d6e543300fc1aa0ef2b22e44bee95 100644 |
--- a/core/fxcrt/fx_basic_util.cpp |
+++ b/core/fxcrt/fx_basic_util.cpp |
@@ -47,6 +47,18 @@ void FX_atonum(const CFX_ByteStringC& strc, FX_BOOL& bInteger, void* pData) { |
} |
} |
+static const FX_FLOAT fraction_scales[] = { |
+ 0.1f, 0.01f, 0.001f, 0.0001f, |
+ 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, |
+ 0.000000001f, 0.0000000001f, 0.00000000001f}; |
+int FXSYS_FractionalScaleCount() { |
+ return FX_ArraySize(fraction_scales); |
+} |
+ |
+FX_FLOAT FXSYS_FractionalScale(size_t scale_factor, int value) { |
+ return fraction_scales[scale_factor] * value; |
+} |
+ |
FX_FLOAT FX_atof(const CFX_ByteStringC& strc) { |
if (strc.IsEmpty()) |
return 0.0; |
@@ -74,17 +86,14 @@ FX_FLOAT FX_atof(const CFX_ByteStringC& strc) { |
value = value * 10 + FXSYS_toDecimalDigit(strc.CharAt(cc)); |
cc++; |
} |
- static const FX_FLOAT fraction_scales[] = { |
- 0.1f, 0.01f, 0.001f, 0.0001f, |
- 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, |
- 0.000000001f, 0.0000000001f, 0.00000000001f}; |
int scale = 0; |
if (cc < len && strc[cc] == '.') { |
cc++; |
while (cc < len) { |
- value += fraction_scales[scale] * FXSYS_toDecimalDigit(strc.CharAt(cc)); |
+ value += |
+ FXSYS_FractionalScale(scale, FXSYS_toDecimalDigit(strc.CharAt(cc))); |
scale++; |
- if (scale == FX_ArraySize(fraction_scales)) |
+ if (scale == FXSYS_FractionalScaleCount()) |
break; |
cc++; |
} |