2016-09-04 4 views
0

Ich habe Zahlen Array: [1, 1.241241, 5.2133213]Javascript Mathe mit Dezimalzahlen

hier ist Zahlen mit Punkt. Ich möchte sie teilen und nur so bleiben: [1, 1.2, 5.2]

Wie kann ich das machen?

+1

was haben Sie versucht? – ItayB

+0

JavaScript String Slice, aber es funktioniert nicht –

+0

Sie wäre besser dran in die 'toFixed' Methode: http://www.w3schools.com/jsref/jsref_tofixed.asp – enhzflep

Antwort

3

Verwenden Number#toFixed Methode.

var data = [1, 1.241241, 5.2133213]; 
 

 
// iterate and generate new array 
 
var res = data.map(function(v) { 
 
    // check fractional part present if present remove 
 
    // the remaining part using toFixed and convert back to number 
 
    return Math.round(v) == v ? v : Number(v.toFixed(1)); 
 
}) 
 

 
console.log(res);

+0

Danke. Ich habe versucht und es funktioniert –

+0

@ NewUbuntuDeveloper: froh, zu helfen –

0
for (var i=0 ; i < a.length ; i++) { 
    if (parseInt(a[i]) != a[i]) 
     a[i] = Number(a[i].toFixed(1)); 
} 

Das Snippet oben (ich hoffe, das ist, was Sie gesucht haben) nur Zahlen ändern, die keine ganzen Zahlen sind - und gerade ihre erste Stelle zurückkehren ..

+0

Was ist falsch an sich ändernden Ganzzahlen? 'var x = 5; Number (x.toFixed (1)) 'ist immer noch' 5'. JavaScript unterscheidet nicht zwischen Integer- und Float-Typen - sie sind alle gleich. Wenn eine Zahl zufällig einen Bruchteil hat, wird sie angezeigt, andernfalls nicht. Daher wird '5.0 === 5' 'wahr' zurückgeben, weil sie beide die gleiche Sache sind. – vlaz

+0

Ich weiß das - aber in der Frage - er wollte, dass 1 bleiben 1 und nicht zu 1.0 werden – ItayB

+0

Es wird nicht '1.0'. Genau das habe ich gesagt. Ernsthaft kopiere einfach und kopiere das und sieh dir an, was du bekommst. 'Var x = 5; Nummer (x.toFixed (1)) '. Oder noch besser, rufen Sie einfach 'console.log (1.0)' und sehen Sie, ob Sie '1.0' erhalten. – vlaz

0

Mit Schleife und toFixed:

var x = 0; 
var len = my_array.length; 
while(x < len){ 
    my_array[x] = my_array[x].toFixed(2); 
    x++; 
} 
0

Diese Ihre Eingabe nehmen und bestimmen zunächst, ob es sich um ein Schwimmer ist, da Sie ganze Zahlen geändert werden nicht wollen.

cropNum(1); 
 
cropNum(1.241241); 
 
cropNum(5.2133213); 
 

 
function cropNum(n) { 
 
    if (Number(n) === n && n % 1 !== 0) { 
 
    return parseFloat(Math.round(n * 100)/100).toFixed(1) 
 
    } 
 

 
    return n; 
 
} 
 

 
// returns: 
 
// 1 
 
// 1.2 
 
// 5.2

0

var a=[1, 1.241241, 5.2133213]; 
 
var b=[]; 
 
for(var i = 0; i < a.length; i++){ 
 
    c = a[i].toFixed(1); 
 
b.push(c); 
 

 
} console.log(b);