programing

javascript에서 소수점 2자리 float를 해석하는 방법은?

goodsources 2022. 9. 12. 11:55
반응형

javascript에서 소수점 2자리 float를 해석하는 방법은?

나는 다음과 같은 코드를 가지고 있습니다.price_result가 정수와 같다면 10으로 하고 소수점 2자리를 더하고 싶습니다.그럼 10은 10.00이 되겠네요.또는 10.6이 같으면 10.60이 됩니다.어떻게 해야 할지 모르겠어요.

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

이를 위해 toFixed()를 사용할 수 있습니다.

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

(게임 등) 퍼포먼스가 필요한 경우:

Math.round(number * 100) / 100

parseFloat(number.toFixed(2))의 약 100배 고속입니다.

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

사용할 때toFixed값은 항상 문자열로 반환됩니다.이로 인해 코드가 복잡해질 수 있습니다.이를 피하기 위해 Number에 대한 대체 방법을 만들 수 있습니다.

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

및 용도:

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

또는 단순하게:

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

숫자를 반환하려면 괄호의 다른 레이어를 추가합니다.깨끗하게 유지시켜줍니다.

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

만약 당신의 목적이 해석이고 입력이 리터럴일 수 있다면, 당신은 그것을 예상할 수 있습니다.float그리고.toFixed에서는 이 기능을 제공하지 않습니다.따라서 이 기능을 제공하는 두 가지 간단한 기능은 다음과 같습니다.

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

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

lodash의 ceil이 아마 최고일 것이다.

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

번호도 사용할 수 있고 안전합니다.

float 값 2자리에는 .toFixed() to 를 사용할 수 있습니다.

엑삼페일

let newValue = parseFloat(9.990000).toFixed(2)

//output
9.99

반올림하지 않으려면 아래 함수를 사용하십시오.

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    
}

제 케이스에 이걸 써봤는데 잘 될 거예요.

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

샘플 출력:

9.007

값: 십진수는 십진수입니다.다른 값으로 반올림하거나 반올림하지 마십시오.내부적으로는 부동 소수점 조정 및 처리 규칙에 따라 소수점 분수에 근접합니다.표시할 자리수에 관계없이 내부적으로 10진수(부동 소수점, JS의 2배)를 유지합니다.

표시를 위해 문자열 변환을 통해 원하는 디스플레이 정밀도를 선택할 수 있습니다.프레젠테이션은 디스플레이의 문제이지 스토리지의 문제가 아닙니다.

@sd 단답:JS에서는 Number datype 값을 10진수 뒤에 0으로 끝내는 방법은 없습니다.

장황한 답변:의 특성입니다.toFixed또는toPrecision문자열을 반환하는 JavaScript 함수입니다.그 이유는 숫자 데이터형이 a = 2.00과 같은 값을 가질 수 없으며, 항상 소수점 뒤에 오는 0이 제거되기 때문입니다. 이것은 숫자 데이터형의 기본 제공 속성입니다.JS에서 위의 사항을 달성하려면 두 가지 옵션이 있습니다.

  1. 데이터를 문자열로 사용하거나
  2. 끝의 ex 2.50 -> 2.5에서 대소문자 '0'을 잘라낸 값에 동의합니다.숫자 10진수 뒤에 후행 0을 사용할 수 없습니다.
parseFloat(parseFloat(amount).toFixed(2))

두 번 구문 분석해야 합니다.한 후 , 2개의 소수점)으로입니다.toFixed문자열)을 반환하고 마지막으로 다시 해석합니다.

가격을 문자열로 저장할 수 있습니다.

숫자(문자열)를 사용할 수 있습니다.

계산하실 수 있습니다.

Number("34.50") == 34.5

또한.

Number("35.65") == 35.65

Number 기능이 마음에 드신다면 사용하셔도 됩니다.

이것을 시험해 보세요(코드의 코멘트를 참조).

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);
}
Solution for FormArray controllers 

FormArray Form Builder 초기화

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

폼 작성

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

폼 값을 폼 컨트롤러로 설정

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

단순 JavaScript, 이동할 문자열:

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

다른 해결책이 있어요

하시면 됩니다.round() 하다toFixed()

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

나에게 효과가 있는 솔루션은 다음과 같다.

parseFloat(value)

언급URL : https://stackoverflow.com/questions/4435170/how-to-parse-float-with-two-decimal-places-in-javascript

반응형