Hoe floot te ontleden met twee decimalen in JavaScript?

Ik heb de volgende code. Ik zou het graag willen hebben dat als Prijs_Result gelijk is aan een geheel getal, laten we zeggen 10, dan wil ik twee decimalen toevoegen. Dus 10 zou 10.00 zijn.
Of als het gelijk is aan 10.6 zou 10.60 zijn. Niet zeker hoe dit te doen.

price_result = parseFloat(test_var.split('$')[1].slice(0,-1));

Antwoord 1, Autoriteit 100%

U kunt tofixed () gebruiken om dat te doen

var twoPlacedFloat = parseFloat(yourString).toFixed(2)

Antwoord 2, Autoriteit 7%

Als u prestaties nodig hebt (zoals in games):

Math.round(number * 100) / 100

Het is ongeveer 100 keer zo snel als par-uplat (nummer.tofixed (2))

http://jsperf.com/parfloat-tofixed-vs-math-round


Antwoord 3, Autoriteit 5%

Wanneer u toFixedgebruikt, retourneert het altijd de waarde als een tekenreeks. Dit compliceert soms de code. Om dat te voorkomen, kunt u een alternatieve methode voor nummer maken.

Number.prototype.round = function(p) {
  p = p || 10;
  return parseFloat( this.toFixed(p) );
};

en gebruik:

var n = 22 / 7; // 3.142857142857143
n.round(3); // 3.143

of eenvoudig:

(22/7).round(3); // 3.143

Antwoord 4, Autoriteit 2%

Voeg een nummer weer toe, voeg een andere laag haakjes toe. Houdt het schoon.

var twoPlacedFloat = parseFloat((10.02745).toFixed(2));

Antwoord 5

Als uw doel is om te ontleden, en uw invoer misschien een letterlijke is, verwacht u een floaten toFixedZAL DAT NIET ZELF Twee eenvoudige functies om dit te verstrekken:

function parseFloat2Decimals(value) {
    return parseFloat(parseFloat(value).toFixed(2));
}
function parseFloat2Decimals(value,decimalPlaces) {
    return parseFloat(parseFloat(value).toFixed(decimalPlaces));
}

Antwoord 6

Ceil uit Laagash is waarschijnlijk de beste

_.ceil("315.9250488",2) 
_.ceil(315.9250488,2) 
_.ceil(undefined,2)
_.ceil(null,2)
_.ceil("",2)

werkt ook met een cijfer en het is veilig


Antwoord 7

Gebruik hieronder de functie als u niet wilt afronden.

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    
}

Antwoord 8

Voor wat de moeite waard is: een decimaal getal, is een decimaal getal, u rond het om met een andere waarde of niet. Intern zal het een decimale fractie benaderen volgens de regel van drijvende punt arthmetische en hantering. Het blijft een decimaal getal (drijvend punt, in JS A Double) intern, ongeacht hoe u veel cijfers waarmee u het wilt weergeven.

Om het voor het display te presenteren, kunt u de precisie van het display kiezen voor wat u maar wilt op stringconversie. Presentatie is een weergaveprobleem, geen opslag.


Antwoord 9

@sd
Kort antwoord: Er is geen enkele manier in JS om een ​​aantal datatype-waarde te hebben met trailing nullen na een decimaal.

Long Antwoord: het eigendom van toFixedof toPrecisionFUNCTION VAN JAVASCRIPt, om de tekenreeks te retourneren. De reden hiervoor is dat het aantal datatype geen waarde kan hebben zoals A = 2,00, het zal altijd de trailing nullen verwijderen na het decimaal, dit is het ingebouwde eigenschap van nummergegevenatype. Dus om het bovenstaande in JS te bereiken, hebben we 2 opties

  1. Gebruik gegevens als een string of
  2. Ga akkoord met de afgeknotte waarde met Case ‘0’ aan het einde Ex 2.50 – & GT; 2.5.

Antwoord 10

U kunt .tofixed () gebruiken voor voor floatwaarde 2 cijfers

exampale

let newValue = parseFloat(9.990000).toFixed(2)
//output
9.99

Antwoord 11

Ik heb dit voor mijn geval geprobeerd en het zal goed werken.

var multiplied_value = parseFloat(given_quantity*given_price).toFixed(3);

Voorbeelduitgang:

9.007


Antwoord 12

U kunt uw prijs opslaan als een string

u kunt gebruiken
Nummer (string)

voor uw berekeningen.

Voorbeeld

Number("34.50") == 34.5

ook

Number("35.65") == 35.65

Als u zich op uw gemak voelt met de cijferfunctie, kunt u ermee gaan.


Antwoord 13

Simple JavaScript, string om te zweven:

var it_price = chief_double($("#ContentPlaceHolder1_txt_it_price").val());
function chief_double(num){
    var n = parseFloat(num);
    if (isNaN(n)) {
        return "0";
    }
    else {
        return parseFloat(num);
    }
}

Antwoord 14

Probeer dit (zie opmerkingen in de code):

function fixInteger(el) {
    // this is element's value selector, you should use your own
    value = $(el).val();
    if (value == '') {
        value = 0;
    }
    newValue = parseInt(value);
    // if new value is Nan (when input is a string with no integers in it)
    if (isNaN(newValue)) {
        value = 0;
        newValue = parseInt(value);
    }
    // apply new value to element
    $(el).val(newValue);
}
function fixPrice(el) {
    // this is element's value selector, you should use your own
    value = $(el).val();
    if (value == '') {
        value = 0;
    }
    newValue = parseFloat(value.replace(',', '.')).toFixed(2);
    // if new value is Nan (when input is a string with no integers in it)
    if (isNaN(newValue)) {
        value = 0;
        newValue = parseFloat(value).toFixed(2);
    }
    // apply new value to element
    $(el).val(newValue);
}

Antwoord 15

Solution for FormArray controllers 

Initialiseer de formulier Form Builder

 formInitilize() {
    this.Form = this._formBuilder.group({
      formArray: this._formBuilder.array([this.createForm()])
    });
  }

Maak een formulier

 createForm() {
    return (this.Form = this._formBuilder.group({
      convertodecimal: ['']
    }));
  }

Set Form-waarden in formuliercontroller

 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;
  }

Antwoord 16

Ik heb andere oplossing.

U kunt round()gebruiken om dat in plaats daarvan te doen toFixed()

var twoPlacedFloat = parseFloat(yourString).round(2)

Antwoord 17

De oplossing die voor mij werkt, is de volgende

parseFloat(value)

Other episodes