forked from upstream-mirrors/OpenTracks
Fixed StringUtils.formatDecimal to work with decimals of 0.
This commit is contained in:
@@ -199,4 +199,24 @@ public class StringUtilsTest {
|
|||||||
Assert.assertEquals(-1, parts[1]);
|
Assert.assertEquals(-1, parts[1]);
|
||||||
Assert.assertEquals(0, parts[2]);
|
Assert.assertEquals(0, parts[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFormatDecimal() {
|
||||||
|
Assert.assertEquals("0", StringUtils.formatDecimal(0.0, 0));
|
||||||
|
Assert.assertEquals("0", StringUtils.formatDecimal(0.1, 0));
|
||||||
|
Assert.assertEquals("1", StringUtils.formatDecimal(1.1, 0));
|
||||||
|
Assert.assertEquals("10", StringUtils.formatDecimal(10, 0));
|
||||||
|
Assert.assertEquals("10", StringUtils.formatDecimal(10.1, 0));
|
||||||
|
Assert.assertEquals("0", StringUtils.formatDecimal(-0.1, 0));
|
||||||
|
|
||||||
|
Assert.assertEquals("0", StringUtils.formatDecimal(0.0, 2));
|
||||||
|
Assert.assertEquals("0.1", StringUtils.formatDecimal(0.1, 2));
|
||||||
|
Assert.assertEquals("1.1", StringUtils.formatDecimal(1.1, 2));
|
||||||
|
Assert.assertEquals("10", StringUtils.formatDecimal(10, 2));
|
||||||
|
Assert.assertEquals("10.1", StringUtils.formatDecimal(10.1, 2));
|
||||||
|
Assert.assertEquals("10.11", StringUtils.formatDecimal(10.111, 2));
|
||||||
|
Assert.assertEquals("-0.1", StringUtils.formatDecimal(-0.1, 2));
|
||||||
|
|
||||||
|
Assert.assertEquals("1", StringUtils.formatDecimal(0.99, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.text.TextUtils;
|
|||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.text.ParsePosition;
|
import java.text.ParsePosition;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -124,13 +125,20 @@ public class StringUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static String formatDecimal(double value) {
|
private static String formatDecimal(double value) {
|
||||||
return StringUtils.formatDecimal(value, 2);
|
return StringUtils.formatDecimal(value, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a decimal number while removing trailing zeros of the decimal part (if present).
|
||||||
|
*/
|
||||||
static String formatDecimal(double value, int decimalPlaces) {
|
static String formatDecimal(double value, int decimalPlaces) {
|
||||||
String result = String.format(Locale.getDefault(), "%1$,." + decimalPlaces + "f", value);
|
if (decimalPlaces < 1) {
|
||||||
return result.replaceAll("[0]*$", "").replaceAll("\\.$", "");
|
return Long.toString(Math.round(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
String format = "#." + new String(new char[decimalPlaces]).replace("\0", "#");
|
||||||
|
return new DecimalFormat(format).format(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user