Comments (4)
The precision of 7 comes from using MathContext.DECIMAL32
by default (see Java docs).
As for why that's the default, I'm not sure.
from evalex.
Looked into this a bit more. The 13 precision you are seeing in your default BigDecimal is not actually a default precision; precision adapts to the number of digits when it's not specified.
Looking at the BigDecimal source code:
private volatile transient int precision = 0;
/** * Returns the <i>precision</i> of this {@code BigDecimal}. (The * precision is the number of digits in the unscaled value.) * * <p>The precision of a zero value is 1. * * @return the precision of this {@code BigDecimal}. * @since 1.5 */ public int precision() { int result = precision; if (result == 0) { result = digitLength(); precision = result; } return result; }
If I'm correct, then this should be true:
BigDecimal bd = new BigDecimal("123");
System.out.println(bd.precision()); // print 3
And if that's true, then it looks like MathContext.UNLIMITED would be the 'correct' default in order to match default BigDecimal behavior.
from evalex.
Exactly, @squeek502. There is no default MathContext in Java, so I had to choose one specific. DECIMAL32 won the race. I think there was some reason after some tests, but I'm not sure.
Just read your second commen, @squeek502 and that may have been one reason.
Probably a separate constructor Expression(String expression, MathContext context)
could give more flexibility.
from evalex.
Hi all, thanks for the clarification. I guess for now I will set the precision to 0 and rounding mode to HALF_UP to match the default behavior (UNLIMITED).
from evalex.
Related Issues (20)
- Support arrays as function parameters HOT 7
- Equality depends on input type in 3.1.0
- problem with placeholder HOT 1
- Add module-info (or at least Automatic-Module-Name) HOT 2
- SQRT function doesn't work HOT 3
- With introduction of null, it's better to allow short circuiting (lazy evaluation) for those boolean operators HOT 4
- Equals/NotEquals operator is now sometimes showing inconsistent behavior HOT 1
- Broken boolean expression evaluation in version 3.1.0
- Allow Java arrays as input parameters
- Restore compatibility with Java 8 HOT 2
- Determine evaluation result type without evaluating HOT 2
- Java exception generated when trying to calculate expressions (it worked before with the original EvalEX library in the previous GitHub) HOT 2
- Can arrayJson filtering be supported? HOT 6
- Add a configurable locale to the configuration
- New Player Guidebook Naming rules HOT 1
- Incorrect behavior of ‘==’ operator in IF() expression for Array typed variable
- Management of the exception IndexOutOfBoundsException for Array variables
- Definition domain of the ACOS function
- does not evaluate if expression operand has a period, hyphen seperater HOT 2
- `SQRT` Javadoc issue.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from evalex.