J'ai le code suivant. Je voudrais l'avoir tel que si price_result est égal à un entier, disons 10, alors je voudrais ajouter deux décimales. Donc 10 équivaudrait à 10,00 ... ou si 10,6 était égal à 10,6. Je ne sais pas comment faire ça.
price_result = parseFloat(test_var.split('$')[1].slice(0,-1));
Vous pouvez utiliser toFixed () pour le faire
var twoPlacedFloat = parseFloat(yourString).toFixed(2)
Lorsque vous utilisez toFixed
, la valeur est toujours renvoyée sous forme de chaîne. Cela complique parfois le code. Pour éviter cela, vous pouvez créer une méthode alternative pour Number.
Number.prototype.round = function(p) {
p = p || 10;
return parseFloat( this.toFixed(p) );
};
et utilise:
var n = 22 / 7; // 3.142857142857143
n.round(3); // 3.143
ou simplement:
(22/7).round(3); // 3.143
Si vous avez besoin de performance (comme dans les jeux):
Math.round(number * 100) / 100
C'est environ 100 fois plus vite que parseFloat (number.toFixed (2))
Pour renvoyer un nombre, ajoutez une autre couche de parenthèses. Le garde propre.
var twoPlacedFloat = parseFloat((10.02745).toFixed(2));
Si votre objectif est d'analyser et que votre entrée peut être littérale, vous vous attendez à ce que float
et toFixed
ne le fournissent pas. Voici donc deux fonctions simples permettant de fournir ceci:
function parseFloat2Decimals(value) {
return parseFloat(parseFloat(value).toFixed(2));
}
function parseFloat2Decimals(value,decimalPlaces) {
return parseFloat(parseFloat(value).toFixed(decimalPlaces));
}
ceil de lodash est probablement le meilleur
_.ceil("315.9250488",2)
_.ceil(315.9250488,2)
_.ceil(undefined,2)
_.ceil(null,2)
_.ceil("",2)
travaillera aussi avec un numéro et il est sûr
@sd Réponse courte: Il n’ya aucun moyen dans JS d’avoir une valeur de type de données Number avec des zéros à la fin après une décimale.
Réponse longue: C'est la propriété de toFixed
ou toPrecision
fonction de JavaScript, pour renvoyer la chaîne. La raison en est que le type de données Number ne peut pas avoir une valeur telle que a = 2.00, il supprimera toujours les zéros de fin après la décimale. Il s'agit de la propriété intégrée du type de données Number. Donc, pour atteindre ce qui précède dans JS, nous avons 2 options
S'il vous plaît utiliser la fonction ci-dessous si vous ne voulez pas arrondir.
function ConvertToDecimal(num) {
num = num.toString(); //If it's not already a String
num = num.slice(0, (num.indexOf(".")) + 3); //With 3 exposing the hundredths place
alert('M : ' + Number(num)); //If you need it back as a Number
}
Pour ce que cela vaut: Un nombre décimal, est un nombre décimal, que vous l’entouriez d’une autre valeur ou non. En interne, il se rapprochera d'une fraction décimale selon la règle de l'arthrométique en virgule flottante et de sa manipulation. Il reste un nombre décimal (virgule flottante, dans JS un double) en interne, peu importe le nombre de chiffres avec lequel vous souhaitez l'afficher.
Pour le présenter à l'affichage, vous pouvez choisir la précision de l'affichage à votre guise par conversion de chaîne. La présentation est un problème d'affichage, pas de stockage.
La solution qui fonctionne pour moi est la suivante
parseFloat(value)
Solution for FormArray controllers
Initialiser le générateur de formulaire FormArray
formInitilize() {
this.Form = this._formBuilder.group({
formArray: this._formBuilder.array([this.createForm()])
});
}
Créer un formulaire
createForm() {
return (this.Form = this._formBuilder.group({
convertodecimal: ['']
}));
}
Définir les valeurs de formulaire dans le contrôleur de formulaire
setFormvalues() {
this.Form.setControl('formArray', this._formBuilder.array([]));
const control = <FormArray>this.resourceBalanceForm.controls['formArray'];
this.ListArrayValues.forEach((x) => {
control.Push(this.buildForm(x));
});
}
private buildForm(x): FormGroup {
const bindvalues= this._formBuilder.group({
convertodecimal: x.ArrayCollection1? parseFloat(x.ArrayCollection1[0].name).toFixed(2) : '' // Option for array collection
// convertodecimal: x.number.toFixed(2) --- option for two decimal value
});
return bindvalues;
}