asExponential method
String
asExponential(
- int precision, {
- bool remove_trailing_zeros = true,
})
Implementation
String asExponential(int precision, {bool remove_trailing_zeros = true}) {
var offset = _decimal - _exponent;
var extra_zeroes = precision - (_digits.length - offset) + 1;
if (extra_zeroes > 0) {
_digits.addAll(
Formatter.get_padding(extra_zeroes, '0').split('').map(int.parse));
}
_round(offset + precision, offset);
var ret = _digits[offset - 1].toString();
//print ("(${offset}, ${precision})${_digits}");
var trailing_digits = _digits.sublist(offset, offset + precision);
// print ("trailing_digits=${trailing_digits}");
var _exp_str = _exponent.abs().toString();
if (_exponent < 10 && _exponent > -10) {
_exp_str = '0${_exp_str}';
}
_exp_str = (_exponent < 0) ? 'e-${_exp_str}' : 'e+${_exp_str}';
if (remove_trailing_zeros) {
trailing_digits = _remove_trailing_zeros(trailing_digits);
}
if (trailing_digits.isNotEmpty) {
ret += '.';
}
ret = trailing_digits.fold(ret, (i, e) => '${i}${e}');
ret = '${ret}${_exp_str}';
return ret;
}