Je recherche une méthode JS standard qui fait essentiellement que: comme décrit dans le titre que je veux que ma valeur soit arrondi sur des numéros spécifiques, à savoir 1M, 2M et 5 M. p> p>
3 Réponses :
Pas totalement sûr si c'est ce que vous voulez, mais voici ma suggestion:
const temp = Math.abs(myValue / 1000000) * 1000000;
ici, le code que vous voulez.
p>
function formatMoney(n, c, d, t) { var c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "." : d, t = t == undefined ? "," : t, s = n < 0 ? "-" : "", i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))), j = (j = i.length) > 3 ? j % 3 : 0; return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); } function numShort(value){ if(value < 1000000){ return formatMoney(value, 2, ".", ","); }else if(value < 1000000000){ return formatMoney((value/1000000), 2, ".", ",")+'m'; }else{ return formatMoney((value/1000000000), 2, ".", ",")+'b'; } } console.log(numShort(100)); console.log(numShort(1000)); console.log(numShort(10000)); console.log(numShort(100000)); console.log(numShort(1000000)); console.log(numShort(10000000)); console.log(numShort(100000000)); console.log(numShort(1000000000)); console.log(numShort(10000000000)); console.log(numShort(100000000000));
Certainement, vous devez mettre en œuvre une telle chose spéciale vous-même. Si vous voulez juste une solution fantaisie d'une ligne de fantaisie pour que votre code nettoyeur de code:
p>
var myValue = 1234567; var rounded = [1000000,2000000,5000000].reduce((y,x)=>{return y.diff == undefined || Math.abs(x-myValue) < y.diff ? {val:x,diff:Math.abs(x-myValue)} : y},{}).val; console.log(rounded);
Merci, j'espérais déjà qu'il y avait déjà une solution pour cela ... mais je pense que je vais passer sur la doublure, je pense que la solution de ligne multiple est plus facile à lire et je n'ai pas vraiment besoin de vous inquiéter de la performance
Il n'y a pas de moyen standard de le faire. Vous écrivez-vous vous-même ou utilisez une bibliothèque.
Vous pouvez facilement l'arrondir à des millions, mais vous ne pouvez pas sauter les autres valeurs, comme 0, 3, 4, 6 etc.