Cyrill Schumacher
faaed5fca7
Implement Swedish/Cash rounding fixes #63 ( #66 )
...
Performance and allocations not that good but can be optimized later.
RoundSwedish aka Cash/Penny/öre rounding rounds decimal to a specific
interval. The amount payable for a cash transaction is rounded to the nearest
multiple of the minimum currency unit available. The following intervals are
available: 5, 10, 15, 25, 50 and 100; any other number throws a panic.
5: 5 cent rounding 3.43 => 3.45
10: 10 cent rounding 3.45 => 3.50 (5 gets rounded up)
15: 10 cent rounding 3.45 => 3.40 (5 gets rounded down)
25: 25 cent rounding 3.41 => 3.50
50: 50 cent rounding 3.75 => 4.00
100: 100 cent rounding 3.50 => 4.00
For more details: https://en.wikipedia.org/wiki/Cash_rounding
BenchmarkDecimal_RoundSwedish/five-4 1000000 1918 ns/op 1164 B/op 30 allocs/op
BenchmarkDecimal_RoundSwedish/fifteen-4 300000 4331 ns/op 2940 B/op 74 allocs/op
2017-10-20 10:00:25 -04:00
MOZGIII
ad668bb369
Added JSON support for NullDecimal ( #62 )
...
* Corrected NullDecimal comment
Saying that NullDecimal is immutable is just incorrect, and we don't need
to duplicate the description of properties of a Decimal type here.
* Added UnmarshalJSON and MarshalJSON support for NullDecimal
* Added tests for JSON operations on NullDecimal
* Fixed mistakes in tests
2017-10-10 12:21:51 -04:00
Rigel
aed1bfe463
Added Banker Rounding ( #61 )
...
* made GTE/GT/LT/LTE go-lint compliant
* added banker rounding and tests (RoundBank, StringFixedBank)
2017-09-11 08:58:34 -04:00
Dan Mayor
730de27aa5
Suggesting Sum and Avg methods (provided unit tests), recommending removing val2 from for range loops in TestBinary & TestGobEncode ( #60 )
2017-09-05 09:57:20 -04:00
klokare
b9ab2bce74
Add null support to UnmarshalJSON ( #58 )
...
Unmarshal null into zero value
2017-08-15 22:25:21 -04:00
Matthew Lane
3c692774ac
Added NewFromBigInt constructor & unit test ( #56 )
2017-07-28 15:12:53 -04:00
Rigel
16a9418214
added GT, GTE, LT, LTE ( #54 )
...
* added GT, GTE, LT, LTE
* GTE -> GreaterThanOrEqual
2017-05-17 18:01:17 -04:00
mattdee123
d5fda14026
Defensive Copy on Coefficient ( #52 )
2017-05-17 10:58:21 -04:00
Bastien Gysler
3868940cdd
Fix GobDecode ( #51 )
...
This commit fixes GobDecode, which were mutating a copy of the receiver, rather than the intended pointed struct.
2017-05-09 08:51:20 -04:00
Evan Shaw
4b9150b187
Add Neg method ( #48 )
...
Neg provides an easy way to negate a Decimal.
2017-02-21 13:39:36 -05:00
Victor Quinn
77e6b496f6
Fix same issue as #39 but without changing the Value() interface
2017-02-21 13:34:52 -05:00
Victor Quinn
ed31524af4
Add GobEncode and GobDecode, fixes the issue raised in #23 but with Marshal/UnmarshalBinary
2017-02-21 13:23:18 -05:00
klokare
15474de08e
Binary Marshalling Support ( #49 )
...
Adds MarshalBinary and UnmarshalBinary methods
2017-02-19 22:31:54 -05:00
Victor Quinn
4570ccd0d5
Merge pull request #38 from edsrzf/sign
...
Add Sign method
2017-02-15 21:22:53 -05:00
Victor Quinn
2aa9963045
Pass lint, add travis stuff to run golint
2017-02-15 18:55:38 -05:00
Victor Quinn
de8af6d48f
Merge pull request #42 from chrisguiney/expose-coefficient
...
Expose a Coefficient() function
2017-02-15 17:39:50 -05:00
Victor Quinn
c0815674f8
Merge pull request #32 from craigjackson/null_decimal
...
Added NullDecimal. Changed Decimal to implement driver.Valuer.
NOTE: This is potentially a breaking change as it reverts #16
2017-02-15 17:37:35 -05:00
Jason Biegel
4e5e2ed948
Remove insignificant digits during string parsing
2017-02-07 12:33:26 -05:00
Evan Shaw
1aec7720a8
Add Sign method
...
d.Sign() is a more convenient way of saying d.Cmp(Zero).
2017-02-07 10:46:18 +13:00
Victor Quinn
5471f2c322
Merge pull request #44 from bgaifullin/master
...
Added method Equal instead of method Equals
2017-02-06 10:49:37 -05:00
Bulat Gaifullin
0460d2dd77
Added method Equal instead of method Equals
2017-02-06 18:46:03 +03:00
Victor Quinn
b8c85eb1cf
Merge pull request #29 from martinlindhe/pow
...
add Pow() (fix #26 )
2017-02-03 18:13:37 -05:00
Victor Quinn
ea75adedfe
Merge pull request #12 from raverkamp/master
...
replaced divsion code
2017-01-30 10:08:29 -05:00
Chris Guiney
c1c27c221b
Expose a Coefficient() function
2017-01-16 14:54:52 -08:00
Craig Jackson
f03103a27d
Have NullDecimal.Value() use Decimal.Value().
2016-11-10 16:07:19 -07:00
Craig Jackson
02487a179e
Added NullDecimal. Changed Decimal to implement driver.Valuer.
...
From comments in PR 16.
2016-11-02 10:15:14 -06:00
Martin Lindhe
8a97b04143
add Pow()
2016-09-19 23:54:54 +02:00
Vadim Graboys
d6f52241f3
allow optional marshalling JSON without quotes
2016-09-18 13:52:01 -07:00
Vadim Graboys
96e19b482b
Merge branch 'tomlinford-master'
2016-09-18 13:32:48 -07:00
Chris Rivera
8879c91b35
Handle strings being passed to Scan()
...
lib/pq can now pass strings to Scan() as of:
e2402a7cd1
2016-08-03 16:03:49 -04:00
Roland Averkamp
b77bff862c
Merge remote-tracking branch 'upstream/master'
2016-04-25 21:20:59 +02:00
Nathan VanBenschoten
ecd4a8353a
Implement Modulus arithmetic function
2016-01-15 16:32:48 -05:00
Vadim Graboys
af95951b3f
Merge pull request #15 from pwiecz/master
...
Add a fast track to d.Cmp(d2) when d.exp == d2.exp
2016-01-13 16:11:24 -05:00
Nathan VanBenschoten
eae6d13435
Prevent unnecessary int64 overflow in NewFromFloat
2016-01-13 13:27:32 -05:00
Tom Linford
54efccb61f
Make Value take a pointer receiver
2015-12-23 17:00:06 -08:00
Piotr
cb949cead4
Add a fast track to d.Cmp(d2) when d.exp == d2.exp
...
This makes a noticeable difference when one is sorting a large slice
of decimals when most of them have the same precision, as it is saving
a lot of calls to rescale().
2015-12-11 23:54:57 +01:00
Florent AIDE
b873aa2b43
Return nil instead of empty err in Scan
2015-12-11 06:37:27 +01:00
Florent AIDE
c30673fb5f
Use an idiomatic type switch for Scan type comparison
2015-12-11 06:34:52 +01:00
Florent AIDE
28bb8ff9f5
use directly the int64 instead of casting to float
2015-12-03 11:06:49 +01:00
Florent AIDE
9e9cba8a85
Better implementatin with switch and support for 0
2015-11-23 18:45:31 +01:00
Florent AIDE
c4b5af094a
Added support for Numeric type in db storage
2015-11-23 16:43:59 +01:00
Roland Averkamp
696232de64
only formattimg, really!
2015-09-03 20:10:10 +02:00
Roland Averkamp
8b186db779
replaced original Div, added initialization check and and check for 0 in divide
2015-09-03 17:24:49 +02:00
Roland Averkamp
87964935d0
better method comments
...
use the godoc format for the method comments
2015-09-03 16:31:44 +02:00
Roland Averkamp
e4641fd8ba
added divsion with rest and rounded division
...
Added a division based on integer division with rest.
A simple rounded division aded.
2015-09-01 14:50:25 +02:00
Vadim Graboys
9995dc92ee
fix some small issues with scientific notation, add more tests
2015-07-31 16:22:14 -04:00
Thiago Arruda
632e313f4a
Fix possible int64 overflow and remove unnecessary code
2015-07-31 13:36:54 -03:00
Thiago Arruda
3e7f1c747e
Change exp to int64 to prevent overflow
2015-07-28 08:08:24 -03:00
Thiago Arruda
849f553b9d
Add scientific notation parsing
2015-07-24 13:25:40 -03:00
Vadim Graboys
6da60a24bd
update docs to make more clear
2015-07-24 07:40:22 -04:00
Vadim Graboys
96d9a5e02e
add Min and Max functions
2015-07-24 07:17:36 -04:00
Vadim Graboys
6e97405099
add stupid test for extreme values, fix some super-edge-case bugs
2015-06-14 15:39:05 -04:00
Vadim Graboys
54dc68463b
ensure decimal is initialized for new methods
2015-06-14 14:09:13 -04:00
Vadim Graboys
5359bc7cb4
add docs for Floor and Ceil
2015-06-14 13:10:35 -04:00
Vadim Graboys
0c74aee0c1
add Round, Floor, Ceil, and StringFixed. Deprecate StringScaled
2015-06-14 11:56:33 -04:00
Casey Marshall
d589a882a7
Simplify Equals and Cmp godoc comments.
2015-03-23 16:41:30 -05:00
Casey Marshall
605289b720
Updated godoc comments.
...
http://blog.golang.org/godoc-documenting-go-code
2015-03-23 11:09:19 -05:00
Vadim Graboys
892f011ab6
fix doc for Sub
2015-02-12 12:10:49 -05:00
Vadim Graboys
778765bb9d
better documentation for godoc
2015-02-10 16:19:14 -05:00
Vadim Graboys
3bac4bd166
init
2015-02-10 15:33:58 -05:00