[javascript] JavaScript에서 문자열을 부동 소수점으로 변환하는 방법은 무엇입니까?

데이터 그리드에서 두 값을 구문 분석하려고합니다. 필드는 숫자이며 쉼표 (예 : 554,20)가 있으면 쉼표 뒤에 숫자를 가져올 수 없습니다. 나는 해봤 parseInt하고 parseFloat. 어떻게해야합니까?



답변

그것들이 별도의 값을 의미한다면, 이것을 시도하십시오 :

var values = "554,20".split(",")
var v1 = parseFloat(values[0])
var v2 = parseFloat(values[1])

단일 값을 의미하는 경우 (예 : 프랑스어와 같이 절반이 0.5로 작성 됨)

var value = parseFloat("554,20".replace(",", "."));


답변

이 작업을 시도한 적이 있습니까? :피

var str = '3.8';ie
alert( +(str) + 0.2 );

+ (string)은 문자열을 float로 캐스팅합니다.

능숙한!

따라서 문제를 해결하기 위해 다음과 같은 작업을 수행 할 수 있습니다.

var floatValue = +(str.replace(/,/,'.'));


답변

쉼표를 점으로 바꾸십시오.

554 만 반환합니다 :

var value = parseFloat("554,20")

554.20을 반환합니다 :

var value = parseFloat("554.20")

따라서 결국 다음을 간단히 사용할 수 있습니다.

var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))

parseInt()부동 소수점이 아닌 정수를 구문 분석하는 데만 사용해야한다는 것을 잊지 마십시오 . 귀하의 경우 554 만 반환합니다. 또한 float에서 parseInt ()를 호출하면 숫자가 반올림되지 않습니다.


의견에서 Pedro Ferreira의 질문에 대답하는 확장 된 예 :

텍스트 필드에 이와 같이 수천 개의 분리 점이 포함되어 있으면 1.234.567,99다른 점으로 미리 제거 할 수 있습니다 replace.

var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))


답변

String 객체를 이와 같이 확장하면

String.prototype.float = function() {
  return parseFloat(this.replace(',', '.'));
}

.. 이렇게 실행할 수 있습니다

"554,20".float()
> 554.20

도트와 함께 작동

"554.20".float()
> 554.20

typeof "554,20".float()
> "number"


답변

@GusDeCool 또는 수천 개 이상의 구분 기호를 바꾸려는 사람은 정규식 전역 바꾸기 /foo/g입니다. .메타 문자 임을 기억 하면 이스케이프하거나 대괄호 ( \.또는 [.]) 로 묶어야 합니다. 하나의 옵션이 있습니다 :

var str = '6.000.000';
str.replace(/[.]/g,",");


답변

이 기능을 사용할 수 있습니다. 쉼표를 ”로 바꾼 다음 값을 구문 분석하고 값을 다시 쉼표로 조정합니다.

function convertToFloat(val) {
        if (val != '') {
            if (val.indexOf(',') !== -1)
                val.replace(',', '');
            val = parseFloat(val);
            while (/(\d+)(\d{3})/.test(val.toString())) {
                val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
            }
        }
        return val;
    }


답변

천 단위 구분 기호와 소수점 구분 기호를 미리 알지 못한다는 점을 제외하고는 동일한 문제가있었습니다. 이를 위해 라이브러리를 작성했습니다. 여기에 관심이 있으시면 https://github.com/GuillaumeLeclerc/number-parsing