File tree Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Original file line number Diff line number Diff line change 5
5
*/
6
6
export function toRadians ( degrees : number ) : number {
7
7
return degrees * ( Math . PI / 180 ) ;
8
- }
8
+ }
9
+
10
+ /**
11
+ * Rounds a value, towards zero, if the remainder of dividing number by multiple is greater than or equal to half the value of multiple.
12
+ * @param {number } number - The value to round.
13
+ * @param {number } multiple - The multiple to which you want to round number.
14
+ * @return {number } The number rounded to the desired multiple.
15
+ */
16
+ export function mRound ( number : number , multiple : number ) : number {
17
+ if ( isNaN ( multiple ) ) {
18
+ return 0 ;
19
+ }
20
+
21
+ multiple = Number ( multiple ) ;
22
+ var result = number % multiple ;
23
+ if ( result < 0 ) {
24
+ return - mRound ( - number , - multiple ) ;
25
+ }
26
+
27
+ result = Number ( ( number - result ) . toFixed ( 0 ) ) ;
28
+ var compare = ( multiple / 2 ) <= Math . abs ( number - result ) ;
29
+ if ( compare ) {
30
+ if ( result < 0 ) {
31
+ result -= multiple ;
32
+ } else {
33
+ result += multiple ;
34
+ }
35
+ }
36
+
37
+
38
+ return result ;
39
+ }
Original file line number Diff line number Diff line change
1
+ import { mRound } from '../../src'
2
+
3
+ describe ( "when rounding to the nearest multiple" , ( ) => {
4
+ test . each ( [
5
+ [ 10 , 3 , 9 ] ,
6
+ [ - 10 , - 3 , - 9 ] ,
7
+ [ 1.3 , 0.2 , 1.2 ] ,
8
+ ] ) (
9
+ "should round to the nearest multiple of the given number" ,
10
+ ( value , multiple , expected ) => {
11
+ expect ( mRound ( value , multiple ) ) . toBe ( expected )
12
+ }
13
+ )
14
+ } ) ;
You can’t perform that action at this time.
0 commit comments