2017-09-08 2 views
-1

小数点なしで価格を読み取るシステムがあります。例ウェブサイトの価格を小数点なしの数値に変換する

:2890 = $ 28.90

私も(無小数点以下の桁で)どこからでも$ 40.25までたったの$ 40という結果と製品のウェブサイトの価格を取るシステムを持っています。私はおそらく、$ 40.25から4025または$ 40から4000のようなものに変換するjavaScriptまたはjQueryを使って、正規表現または関数を必要とします。第2システムの戻り値を小数点なしの数値だけを除く最初のシステムに送る必要があるからです。

私はもともと私がこれを持っていると思っていました:item.price = Number(item.price.replace(/[^0-9\.-]+/g,"")*100);ここでitem.priceは$ 79.99と同じですが、7999の代わりに7998.99999999の結果を返しました。小数点以下桁数なので、parseFloatはオプションではありません。助けていただければ幸いです!

+0

人います"item.price = parseInt(item.price.replace(" $ "、" "))* 100;"正しかった。それは私が問題を解決するのを助けました。ありがとう! – Dtrav

+0

本当に欲しいものは?最初に$ 40.25から$ 40_に、そして$ 40.25から4025または$ 40から4000_のようなものがあります。それは私たちのために混乱しています。 – debute

+0

私は2つのシステムを持っています。 1つは小数点なしの数字を読み込みます。 2890 = 28.90ドルです。他のシステムは、ウェブサイト(例えば、$ 40.25または$ 40)と同等の価格を読み取ります。 2番目のシステム($ 40.25または$ 40)が最初のシステムにその番号を送信する必要があることを明示していないため、混乱する可能性があります(最終結果は4025または4000にする必要があります)。うまくいけば、それは物事をクリアします。私は私の質問を更新します。 – Dtrav

答えて

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 
0

を試してみて、解析・通貨・ライブラリは、方法だろうが、それはあなたの問題のために十分ではありません。あなたが固定されることはありません数を求めたとして、あなたがそのような何かを行うことができ

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" 
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))

関連する問題