2017-11-03 4 views
-1

私は自分のビューに価格を表示しています。価格はこのように、項目ごとに、設定されている:今toFixedは同じ変数に宣言するときの関数ではありません

var price = item.price * item.vat

一定の条件が満たされた場合、私は2つの小数点以下まで表示するために、価格にtoFixed(2)を使用します。私はケースのためであれば、条件を記述しようとしている:

if (conditionIsMet) { 
    var price2 = price.toFixed(2); 
} 

if (conditionIsMet) { 
    price = price.toFixed(2); 
} 

が、クロームデベロッパーツールは私に私のような何かをしようとしたとして、非常に奇妙であることUncaught TypeError: price.toFixed is not a functionを、語っています働く私の疑問はtoFixed()が文字列を返すことです。これは問題です。私はparseFloatを使って解決しようとしましたが、無駄です。どこが間違っていますか?

+0

実際の問題を示す[最小限で完全で検証可能な例](https://stackoverflow.com/help/mcve/)を追加してください。 – Andreas

+0

'toFixed()'はNumber型のメソッドです。 'price'と' price2'は文字列、配列、オブジェクトではありませんか? –

+0

はい、私は100%確信しています '価格'は数字です。 – djur999

答えて

0

最初にparseFloat(price)を浮動小数点価格にしてみてください。あなたの価格が文字列の場合は動作しません。

+0

私はこれを試しましたが、動作していません。 '価格'はすでに数字です! – djur999

+0

それにはおそらくそれに影響を与えるいくつかのコードがあります。関連するすべてのコードを投稿できますか? –

+0

あなたは 'console.log(typeof price)'というものを教えてくれますか? –

0

toFixed method returns a string

(function() { 
 
    let price = parseFloat('10.452'); 
 
    document.write(typeof price + ' - ' + price.toFixed(2) + '<br />'); 
 
})(); 
 

 
(function() { 
 
    let price = '10.452'; 
 

 
    document.write(typeof price + ' - '); 
 
    document.write(price.toFixed(2)); 
 
})();

あなたが見ることができるように私は浮いて解析していますので、最初の方法が機能します。

2番目の方法は、文字列であるため、エラーをスローするために必要なメソッドがありません。

あなたの例のシミュレーション:

var item = { 
 
    price: 8.99, 
 
    vat: 1.23 
 
}; 
 

 
var price = item.price * item.vat; 
 

 
if (true) { 
 
    price = price.toFixed(2); 
 
}

あなたの例では、すべてのエラーをスローしません。

0

価格=数(価格).toFixed(2);

関連する問題