2017-02-27 26 views
-1

私は一連の数字を持っています。たとえば、次のように彼らは整数であるか、3よりも多い場合、彼らは3桁の小数点以下小数点およびshow最大の後には3つの以上の数字を持っていない場合は小数点以下3桁以内の数字を表示する

3, 3.4567, 4.5, 5.72, 6.12345 

がどのように私は、元の番号を表示することができますか?ここで私が何をしたいです:

3, 3.456, 4.5, 5.72, 6.123 

私はtoFixed()を使用し、それは各々の数は、小数点以下3桁の数字が付属しています。

私が欲しいものを達成するために使用するJavascriptメソッドはありますか?

---------更新-----------

Iポインタからこれを使用する:

恐らくMath.round(オリジナル* 1000)/ 1000

古い投稿です。それは働いているようだ。

+1

私はリンク質問ここにも適用されます(少し修正)からの回答: val =(Math.floor(val * 1000)/ 1000).toString() – Psi

+1

重複の2番目の回答を参照して、質問に答えてください。 – Li357

答えて

1

わからないこれが最良の方法ですが、それは

Math.floor(3.4567*1000)/1000 
Math.floor(6.12345*1000)/1000 
+0

(これは3.457ではなく、質問の例で3.456の出力を示しています) – Aligma

1

はちょうどそれらを印刷する前に、単項+演算子を使用して数値に戻し、固定文字列をキャスト作品:

var floats = [3, 3.4567, 4.5, 5.72, 6.12345] 
 

 
function toMax3Decimals (x) { 
 
    return +x.toFixed(3) 
 
} 
 

 
console.log(floats.map(toMax3Decimals))

+3

あなたは数秒で私を倒します。 OPがわからない場合は、Numberに変換すると末尾のゼロが取り除かれます。 – Li357

2

Number.prototype.toPrecision()を使用して、小数点以下の桁数に最も近い桁数に丸め、次にparseFloat()結果:これらの数字は、アレイ内にある場合

var num = 6.12345; 
var precise = num.toPrecision(4); //"6.123" 
var result = parseFloat(precise); //6.123 

var num = 4.5; 
var precise = num.toPrecision(4); //"4.500" 
var result = parseFloat(precise); //4.5 

、あなたがマップするために機能customPrecisionを作成することができます。

function customPrecision(num) { 
    return parseFloat(num.toPrecision(4)); 
} 

var nums = [3, 3.4567, 4.5, 5.72, 6.12345]; 
var preciseNums = nums.map(customPrecision); //[3, 3.457, 4.5, 5.72, 6.123] 
関連する問題