@@ -50,24 +50,23 @@ export default function parseNumber(value, locale = "en", format = {}) {
5050 const symbols = info . numbers . symbols ;
5151
5252 let number = value . toString ( ) ;
53- let negative = number . indexOf ( "-" ) ;
5453 let isPercent ;
5554
5655 if ( exponentRegExp . test ( number ) ) {
5756 number = parseFloat ( number . replace ( symbols . decimal , "." ) ) ;
58- if ( isNaN ( number ) ) {
59- number = null ;
60- }
61- return number ;
57+ return isNaN ( number ) ? null : number ;
6258 }
6359
64- if ( negative > 0 ) {
60+ const negativeSignIndex = number . indexOf ( "-" ) ;
61+ if ( negativeSignIndex > 0 ) {
6562 return null ;
6663 }
6764
68- negative = negative > - 1 ;
65+ let isNegative = negativeSignIndex > - 1 ;
66+ const { negative : negativeCurrency , number : newNumber } = cleanCurrencyNumber ( number , info , format ) ;
6967
70- ( { negative = negative , number } = cleanCurrencyNumber ( number , info , format ) ) ;
68+ number = newNumber ;
69+ isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative ;
7170
7271 if ( format . style === "percent" || number . indexOf ( symbols . percentSign ) > - 1 ) {
7372 number = number . replace ( symbols . percentSign , "" ) ;
@@ -83,7 +82,7 @@ export default function parseNumber(value, locale = "en", format = {}) {
8382
8483 if ( isNaN ( number ) ) {
8584 number = null ;
86- } else if ( negative ) {
85+ } else if ( isNegative ) {
8786 number *= - 1 ;
8887 }
8988
@@ -92,4 +91,4 @@ export default function parseNumber(value, locale = "en", format = {}) {
9291 }
9392
9493 return number ;
95- }
94+ }
0 commit comments