2016-11-28 10 views
-1

値を四捨五入しています。以下を参照してください。parseFloatで切り捨てた後に適切な値が得られません

console.log(parseFloat(parseFloat(0.670).toFixed(3))));

これは0.67になりますが、期待されるのは0.670です。そして私はなぜこれが..これがフロートに変換されているのか分かります。

問題は私がフロートに変換する必要があります、私は適切なものを手に入れてください。

+0

私はファイアフォックスで '0.670'を取得していますか? –

+0

私はクロームで0.670を得ていますか? –

+2

0.67と0.670は同じ数字ではありませんか?あなたが望むのは、3小数点以下の出力をフォーマットすることです。 – Vi100

答えて

-1

var a = parseFloat(parseFloat(0.6699).toFixed(3)) + "<br>"; 
 
document.getElementById("demo").innerHTML = a;
<p id="demo"></p>

0

私は私が正しく質問を読まないと思います。

function toPrecision(num, length = 0) { 
 
    const numArr = num.toString().split('') 
 
    const index = numArr.indexOf('.') 
 
    const decimal = index > -1 ? index + 1 : 0 
 
    return Number(numArr.slice(0, decimal + length).join('')) 
 
} 
 

 
console.log(
 
    toPrecision(0.6699, 0), 
 
    toPrecision(0.6699, 1), 
 
    toPrecision(0.6699, 2), 
 
    toPrecision(0.6699, 3), 
 
    toPrecision(10006688.669966, 4) 
 
)

1

var num = 0.670;フロート変数は、その有効桁数を覚えてすることは不可能であるvar num = 0.67;

と完全に同じです。あなたはその精度を手動で追跡しなければなりません。

計算後に数字を文字列として表示しても問題ありません。 console.log(num.toFixed(3));>0.670

関連する問題