XPathDecimal.parse constructor
XPathDecimal.parse(
- String text
Implementation
factory parse(String text) {
final trimmed = text.trim();
if (trimmed.contains('e') || trimmed.contains('E')) {
final parts = trimmed.split(RegExp(r'[eE]'));
final mantissa = XPathDecimal.parse(parts[0]);
final exp = int.parse(parts[1]);
final newScale = mantissa.scale - exp;
if (newScale >= 0) {
return XPathDecimal(mantissa.unscaledValue, newScale);
} else {
return XPathDecimal(mantissa.unscaledValue * _ten.pow(-newScale), 0);
}
}
final dot = trimmed.indexOf('.');
if (dot == -1) {
return XPathDecimal(BigInt.parse(trimmed), 0);
}
final scale = trimmed.length - dot - 1;
final digits = trimmed.replaceFirst('.', '');
return XPathDecimal(BigInt.parse(digits), scale);
}