int space = str.indexOf(' ');
String numPart;
String unitPart;
+ boolean forceExact = false;
if (space == -1) {
numPart = str;
unitPart = "";
+ forceExact = true;
} else {
numPart = str.substring(0, space);
unitPart = str.substring(space + 1);
double num;
double unc;
if (numPart.charAt(numPart.length() - 1) == exactIndicator) {
+ forceExact = true;
numPart = numPart.substring(0, numPart.length() - 1);
+ }
+ num = Double.parseDouble(numPart);
+ if (forceExact)
unc = 0;
- num = Double.parseDouble(numPart);
- } else {
- num = Double.parseDouble(numPart);
+ else {
// Determine sig figs
int echar = numPart.indexOf('e');
if (echar == -1) {
}
private static double expOf(double d) {
- return (d == 0) ? 0 : Math.floor(Math.log10(d));
+ return (d == 0) ? 0 : Math.floor(Math.log10(Math.abs(d)));
}
private static int sigFigsOf(double num, double unc) {