@@ -131,7 +131,13 @@ impl ops::Div for Number {
131
131
132
132
fn div ( self , other : Number ) -> Number {
133
133
match ( self , other) {
134
- ( Number :: Integer ( x) , Number :: Integer ( y) ) => Number :: Float ( ( x as f64 ) / ( y as f64 ) ) ,
134
+ ( Number :: Integer ( x) , Number :: Integer ( y) ) => {
135
+ if x % y == 0 {
136
+ Number :: Integer ( x / y)
137
+ } else {
138
+ Number :: Float ( ( x as f64 ) / ( y as f64 ) )
139
+ }
140
+ }
135
141
( Number :: Float ( x) , Number :: Float ( y) ) => Number :: Float ( x / y) ,
136
142
( Number :: Float ( x) , Number :: Integer ( y) ) => Number :: Float ( x / ( y as f64 ) ) ,
137
143
( Number :: Integer ( x) , Number :: Float ( y) ) => Number :: Float ( ( x as f64 ) / y) ,
@@ -144,7 +150,7 @@ impl ops::Rem for Number {
144
150
145
151
fn rem ( self , other : Number ) -> Number {
146
152
match ( self , other) {
147
- ( Number :: Integer ( x) , Number :: Integer ( y) ) => Number :: Float ( ( x as f64 ) % ( y as f64 ) ) ,
153
+ ( Number :: Integer ( x) , Number :: Integer ( y) ) => Number :: Integer ( x % y ) ,
148
154
( Number :: Float ( x) , Number :: Float ( y) ) => Number :: Float ( x % y) ,
149
155
( Number :: Float ( x) , Number :: Integer ( y) ) => Number :: Float ( x % ( y as f64 ) ) ,
150
156
( Number :: Integer ( x) , Number :: Float ( y) ) => Number :: Float ( ( x as f64 ) % y) ,
0 commit comments