Your solution is much more optimized. Normally I do like your code, but I was afraid that in other locales, with others settings that not ours (the brazillian number format), this can be bogus. Also I don't master the maskMoney code, so I don't know what the possible returns that _val()_ can return. So I adopt a more verbose and safety (for me) solution. The only bug that I found in your solution is that sometimes this.val() can return a NaN, so a call to "replace" will generate a JS error. This is why I do the _|| '0'_ thing. A possible solution is to use this:
```javascript
var unmaskedStr = (this.val() || '0').replace(settings.thousands, '').replace(settings.decimal, '.');
return parseFloat( unmaskedStr );
```