Description
🤔 What's the problem you've observed?
I am considering using the golang implementation of cucumber-expressions in https://github.com/regen-network/gocuke and noticed that bigdecimal
is mapped to https://pkg.go.dev/math/big#Float.
The documentation for big.Float
states that this is structured as sign × mantissa × 2**exponent
. This is not a decimal number! It is a base-2 floating point number, not base-10 as required for decimals.
Java does provide a proper BigDecimal where the documentation clearly states that the structure is unscaledValue × 10-scale
.
✨ Do you have a proposal for making it better?
The mapping of bigdecimal
to big.Float
should be removed in the golang package and consumers should be allowed to register a correct decimal implementation (none is provided by the standard library).
Also in the golang implementation, it seems like it's an error to override a built-in type mapping. It might be worth reconsidering this in case users want to swap out other type mappings.
📚 Any additional context?
Two correct golang decimal implementations are: https://pkg.go.dev/github.com/cockroachdb/apd/v3 and https://pkg.go.dev/github.com/ericlagergren/decimal/v3.
This text was originally generated from a template, then edited by hand. You can modify the template here.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status