Remove scientificNotation preference and use Output.notation instead

This commit is contained in:
serso
2016-05-02 15:37:19 +02:00
parent 7e26b35199
commit 2ac061d8ba
6 changed files with 31 additions and 29 deletions

View File

@@ -51,7 +51,7 @@ public class JsclMathEngine implements MathEngine {
};
private char groupingSeparator = GROUPING_SEPARATOR_NO;
private boolean roundResult = false;
private int numberFormat = FSE_NONE;
private int notation = FSE_NONE;
private int precision = 5;
@Nonnull
private AngleUnit angleUnits = DEFAULT_ANGLE_UNITS;
@@ -183,7 +183,7 @@ public class JsclMathEngine implements MathEngine {
final NumberFormatter nf = numberFormatter.get();
nf.setGroupingSeparator(hasGroupingSeparator() ? getGroupingSeparatorChar(nb) : NumberFormatter.NO_GROUPING);
nf.setPrecision(roundResult ? precision : NumberFormatter.NO_ROUNDING);
switch (numberFormat) {
switch (notation) {
case FSE_ENG:
nf.useEngineeringFormat(NumberFormatter.DEFAULT_MAGNITUDE);
break;
@@ -355,15 +355,11 @@ public class JsclMathEngine implements MathEngine {
this.precision = precision;
}
public void setScienceNotation(boolean scienceNotation) {
setNumberFormat(scienceNotation ? FSE_SCI : FSE_NONE);
}
public void setNumberFormat(int numberFormat) {
if (numberFormat != FSE_SCI && numberFormat != FSE_ENG && numberFormat != FSE_NONE) {
throw new IllegalArgumentException("Unsupported format: " + numberFormat);
public void setNotation(int notation) {
if (notation != FSE_SCI && notation != FSE_ENG && notation != FSE_NONE) {
throw new IllegalArgumentException("Unsupported notation: " + notation);
}
this.numberFormat = numberFormat;
this.notation = notation;
}
public char getGroupingSeparator() {

View File

@@ -55,5 +55,5 @@ public interface MathContext {
@Nonnull
String addGroupingSeparators(@Nonnull NumeralBase nb, @Nonnull String ungroupedIntValue);
void setScienceNotation(boolean scienceNotation);
void setNotation(int notation);
}

View File

@@ -107,7 +107,7 @@ public class JsclMathEngineTest {
@Test
public void testEngineeringNotationWithRounding() throws Exception {
me.setNumberFormat(Real.NumberFormat.FSE_ENG);
me.setNotation(Real.NumberFormat.FSE_ENG);
me.setRoundResult(true);
me.setPrecision(5);
@@ -163,7 +163,7 @@ public class JsclMathEngineTest {
@Test
public void testEngineeringNotationWithoutRounding() throws Exception {
me.setNumberFormat(Real.NumberFormat.FSE_ENG);
me.setNotation(Real.NumberFormat.FSE_ENG);
me.setRoundResult(false);
assertEquals("10E6", me.format(10000000d));

View File

@@ -21,6 +21,7 @@ import jscl.math.function.Constant;
import jscl.math.function.ExtendedConstant;
import jscl.math.function.IConstant;
import jscl.text.ParseException;
import midpcalc.Real;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -797,17 +798,17 @@ public class ExpressionTest {
assertEquals("0.000001222", Expression.valueOf("1222/(10^9)").numeric().toString());
assertEquals("12 345", JsclInteger.valueOf(12345L).toString());
me.setScienceNotation(true);
me.setNotation(Real.NumberFormat.FSE_SCI);
assertEquals("0", Expression.valueOf("0.0").simplify().toString());
assertEquals("1", Expression.valueOf("1.0").simplify().toString());
assertEquals("100", Expression.valueOf("100.0").simplify().toString());
me.setScienceNotation(false);
me.setNotation(Real.NumberFormat.FSE_NONE);
me.setRoundResult(true);
me.setPrecision(5);
assertEquals("0", Expression.valueOf("1222/(10^9)").numeric().toString());
me.setScienceNotation(true);
me.setNotation(Real.NumberFormat.FSE_SCI);
me.setRoundResult(true);
me.setPrecision(5);
assertEquals("1.222E-6", Expression.valueOf("1222/(10^9)").numeric().toString());
@@ -819,24 +820,24 @@ public class ExpressionTest {
me.setRoundResult(false);
assertEquals("1.222E-6", Expression.valueOf("1222/(10^9)").numeric().toString());
me.setScienceNotation(false);
me.setNotation(Real.NumberFormat.FSE_NONE);
assertEquals("0.3333333333333333", Expression.valueOf("1/3").numeric().toString());
me.setScienceNotation(true);
me.setNotation(Real.NumberFormat.FSE_SCI);
assertEquals("0.3333333333333333", Expression.valueOf("1/3").numeric().toString());
me.setRoundResult(true);
me.setPrecision(10);
assertEquals("0.3333333333", Expression.valueOf("1/3").numeric().toString());
me.setScienceNotation(false);
me.setNotation(Real.NumberFormat.FSE_NONE);
me.setRoundResult(true);
me.setPrecision(10);
assertEquals("0.3333333333", Expression.valueOf("1/3").numeric().toString());
} finally {
me.setGroupingSeparator(JsclMathEngine.GROUPING_SEPARATOR_NO);
me.setScienceNotation(false);
me.setNotation(Real.NumberFormat.FSE_NONE);
me.setRoundResult(false);
}
}