Как преобразовать строку валюты в двойную с помощью jQuery или Javascript? - PullRequest
216 голосов
/ 18 февраля 2009

У меня есть текстовое поле, в котором будет строка currency , и мне нужно затем преобразовать эту строку в двойную, чтобы выполнить некоторые операции с ней.

"$1,100.00"1100.00

Это должно происходить на стороне клиента. У меня нет выбора, кроме как оставить строку currency в качестве строки currency в качестве входных данных, но мне нужно привести / преобразовать ее в double, чтобы разрешить некоторые математические операции.

Ответы [ 15 ]

2 голосов
/ 18 февраля 2009

Вы можете попробовать это

<script type="text/javascript">

var str="$1,112.12";
str = str.replace(",","");
str = str.replace("$","");
document.write(parseFloat(str));

</script>
0 голосов
/ 21 января 2019

Эта функция должна работать независимо от локали и настроек валюты:

function getNumPrice(price, decimalpoint) {
    var p = price.split(decimalpoint);
    for (var i=0;i<p.length;i++) p[i] = p[i].replace(/\D/g,'');
    return p.join('.');
}

Предполагается, что вы знаете символ десятичной точки (в моем случае локаль устанавливается из PHP, поэтому я получаю его с <?php echo cms_function_to_get_decimal_point(); ?>).

0 голосов
/ 17 августа 2018
var parseCurrency = function (e) {
    if (typeof (e) === 'number') return e;
    if (typeof (e) === 'string') {
        var str = e.trim();
        var value = Number(e.replace(/[^0-9.-]+/g, ""));
        return str.startsWith('(') && str.endsWith(')') ? -value: value;
    }

    return e;
} 
0 голосов
/ 25 августа 2017
function NumberConvertToDecimal (number) {
    if (number == 0) {
       return '0.00'; 
    }
    number = parseFloat(number);
    number = number.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1");
    number = number.split('.').join('*').split('*').join('.');
    return number;
}
0 голосов
/ 30 декабря 2014
    $ 150.00
    Fr. 150.00
    € 689.00

Я протестировал три вышеуказанных символа валюты. Вы можете сделать это и для других.

    var price = Fr. 150.00;
    var priceFloat = price.replace(/[^\d\.]/g, '');

Выше регулярного выражения удалит все, что не является цифрой или точкой. Так что вы можете получить строку без символа валюты, но в случае «Fr. 150.00», если вы утешите вывод, тогда вы получите цену как

    console.log('priceFloat : '+priceFloat);

    output will be like  priceFloat : .150.00

что неверно, поэтому вы проверяете индекс "." затем разделите это и получите правильный результат.

    if (priceFloat.indexOf('.') == 0) {
            priceFloat = parseFloat(priceFloat.split('.')[1]);
    }else{
            priceFloat = parseFloat(priceFloat);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...