File tree Expand file tree Collapse file tree 2 files changed +18
-2
lines changed
Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -181,14 +181,20 @@ func (value *Number) scaleUp(scale int) int64 {
181181}
182182
183183func (left * Number ) Plus (right * Number ) * Number {
184- scale := left .typ .scale + right .typ .scale
184+ scale := left .typ .scale
185+ if scale < right .typ .scale {
186+ scale = right .typ .scale
187+ }
185188 lv , rv := left .scaleUp (scale ), right .scaleUp (scale )
186189
187190 return & Number {lv + rv , & NumberType {scale }}
188191}
189192
190193func (left * Number ) Minus (right * Number ) * Number {
191- scale := left .typ .scale + right .typ .scale
194+ scale := left .typ .scale
195+ if scale < right .typ .scale {
196+ scale = right .typ .scale
197+ }
192198 lv , rv := left .scaleUp (scale ), right .scaleUp (scale )
193199
194200 return & Number {lv - rv , & NumberType {scale }}
Original file line number Diff line number Diff line change @@ -125,6 +125,11 @@ func (s *Zuite) TestNumber_Plus() {
125125 right : MustNewValue ("3" ).(* Number ),
126126 expected : MustNewValue ("5.0" ).(* Number ),
127127 },
128+ {
129+ left : MustNewValue ("2.0" ).(* Number ),
130+ right : MustNewValue ("3.0" ).(* Number ),
131+ expected : MustNewValue ("5.0" ).(* Number ),
132+ },
128133 }
129134 for _ , ex := range cases {
130135 actual := ex .left .Plus (ex .right )
@@ -149,6 +154,11 @@ func (s *Zuite) TestNumber_Minus() {
149154 right : MustNewValue ("3" ).(* Number ),
150155 expected : MustNewValue ("-1.0" ).(* Number ),
151156 },
157+ {
158+ left : MustNewValue ("2.0" ).(* Number ),
159+ right : MustNewValue ("3.0" ).(* Number ),
160+ expected : MustNewValue ("-1.0" ).(* Number ),
161+ },
152162 }
153163 for _ , ex := range cases {
154164 actual := ex .left .Minus (ex .right )
You can’t perform that action at this time.
0 commit comments