我有一个系统可以读取没有小数的价格。
示例:2890 = $ 28.90
我还有一个系统可以获得产品的网站价格,结果是从40.25美元到40美元(没有小数位)。我很可能需要一个正则表达式或一个使用javaScript或jQuery的函数,它可以将$ 40.25转换为4025或40到4000.因为我需要将第二个系统的返回号码发送到第一个系统,只有数字除外小数位。
我原本以为我有这个:item.price = Number(item.price.replace(/[^0-9\.-]+/g,"")*100);
其中item.price在这种情况下等于$ 79.99但我得到的结果为7998.99999999而不是7999这是我需要的东西我可以&# 39; t有那些小数位,所以parseFloat不是一个选项。非常感谢帮助!
答案 0 :(得分:0)
不要重新发明轮子,使用图书馆!试试https://www.npmjs.com/package/parse-currency
import parseCurrency from 'parse-currency'
const foo = parseCurrency('$10.50')
console.log(foo) // 10.5
const bar = parseCurrency('$1,000,000.25')
console.log(bar) // 1000000.25
答案 1 :(得分:0)
正如Duncan所提到的那样,解析货币库就是这样,但对你的问题来说还不够。让我们发挥更好的作用......
function parseCurrency(amount) {
var number = amount.replace(/[^\d|\.]/g, ''); // Removes everything that's not a digit or a dot
var parsedToFloat = parseFloat(Math.round(number * 100) / 100); // Make a float number even it is an integer
return parsedToFloat.toFixed(2); // Now make sure that it will have always 2 decimal places
}
// This will return the following results...
parseCurrency('$40'); // "40.00"
parseCurrency('$40.25'); // "40.25"
parseCurrency('$40,000.25'); // "40000.25"
答案 2 :(得分:0)
当你要求一个不能修复的数字时,你可以这样做:
const currencies = [
'$40',
'$45.25',
'$45.251123456789',
'$1,000',
'$1,000.25'
];
function convertToNumber(currency) {
const number = currency.replace(/[^\d|\.]/g, '');
return parseFloat(parseFloat(number).toFixed(2)) * 100;
}
console.log(currencies.map(convertToNumber))