in lang/src/main/java/com/epam/deltix/util/lang/StringUtils.java [619:707]
public static double parseDecimalDouble (byte [] bytes, int offset, int len) {
skipSpace: while (len > 0)
switch (bytes [offset]) {
case ' ':
case '\t':
len--;
offset++;
break;
default:
break skipSpace;
}
skipSpace: while (len > 0)
switch (bytes [offset + len - 1]) {
case ' ':
case '\t':
len--;
break;
default:
break skipSpace;
}
int s;
switch (bytes [offset]) {
case '+':
offset++;
len--;
s = 1;
break;
case '-':
offset++;
len--;
s = -1;
break;
default:
s = 1;
break;
}
double v = 0;
boolean frac = false;
double m = 0.1;
while (len > 0) {
byte b = bytes [offset];
len--;
offset++;
if (b == '.') {
frac = true;
break;
}
int digit = b - '0';
if (digit < 0 || digit > 9)
throw new NumberFormatException (
"bytes [" + offset + "] = " + b
);
v = v * 10 + digit;
}
if (frac)
while (len > 0) {
byte b = bytes [offset];
len--;
offset++;
int digit = b - '0';
if (digit < 0 || digit > 9)
throw new NumberFormatException (
"bytes [" + offset + "] = " + b
);
v = v + digit * m;
m *= 0.1;
}
return (s * v);
}