-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNumberUtils.ts
32 lines (27 loc) · 965 Bytes
/
NumberUtils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Copyright (c) 2022. Heusala Group Oy <info@heusalagroup.fi>. All rights reserved.
import { trim } from "lodash";
import { LogService } from "./LogService";
import { isString } from "./types/String";
const LOG = LogService.createLogger('NumberUtils');
export class NumberUtils {
/**
* Validates string and returns float
*
* @param value
*/
public static parseNumber (value: any): number | undefined {
try {
if ( value === undefined ) return undefined;
if ( !isString(value) ) {
value = `${value}`;
}
value = trim(value);
if ( value === '' ) return undefined;
const parsedValue = parseFloat(value as string);
return isNaN(parsedValue) ? undefined : parsedValue;
} catch (err) {
LOG.warn(`toNumber: Error while parsing value as number "${value}": `, err);
return undefined;
}
}
}