249 votes

Affichage de deux décimales, pas d'arrondi

Supposons que j'ai une valeur de 15.7784514, je veux l'afficher de 15,77 sans arrondi.

var num = parseFloat(15.7784514);
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(2)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));

Les résultats en

15.8
15.78
15.778
15.7784514000 

Comment puis-je afficher de 15,77?

260voto

Gumbo Points 279147

Vous pouvez utiliser Math.floor et certains autres arithmétique:

Math.floor(15.7784514000 * 100) / 100

Ou de convertir le nombre en chaîne de caractères, en fonction du nombre jusqu'à la deuxième décimale et les transforment en un certain nombre:

Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))

Ensuite, vous pouvez toujours appeler toFixed pour obtenir une chaîne de caractères avec un nombre fixe de décimales.

82voto

guya Points 601

Rouler vos propres toFixed fonction:

function toFixed(num, fixed) {
    fixed = fixed || 0;
    fixed = Math.pow(10, fixed);
    return Math.floor(num * fixed) / fixed;
}

40voto

ベンノスケ Points 38

J'ai choisi d'écrire cela au lieu de supprimer manuellement le reste avec des cordes, donc je ne pas avoir à traiter avec les maths questions qui viennent avec des numéros:

num = num.toString(); //If it's not already a String
num = num.slice(0, (num.indexOf("."))+3); //With 3 exposing the hundredths place
Number(num); //If you need it back as a Number

Cela vous donnera "15.77" avec num = 15.7784514;

14voto

Martin Varmus Points 21

parseInt est plus rapide que de faire des Mathématiques.étage

function floorFigure(figure, decimals){
    if (!decimals) decimals = 2;
    var d = Math.pow(10,decimals);
    return (parseInt(figure*d)/d).toFixed(decimals);
};

floorFigure(123.5999)    =>   "123.59"
floorFigure(123.5999, 3) =>   "123.599"

5voto

maerics Points 47743

Vous pourriez obtenir la valeur à N décimales de précision (utilisation de plus pour un meilleur effet), puis de déposer le dernier de caractères indésirables de sa chaîne de valeur:

var num = parseFloat(15.7784514);
var str = num.toFixed(10);
str = str.substring(0, str.length-7);
// str = 15.77

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X