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 55 */
66export function toRadians ( degrees : number ) : number {
77 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