JavaScript 문자열 변수를 십진수 / 돈으로 변환


114

JavaScript 문자열 변수를 십진수로 어떻게 변환 할 수 있습니까?

다음과 같은 기능이 있습니까?

parseInt(document.getElementById(amtid4).innerHTML)

답변:


240

예- parseFloat.

parseFloat(document.getElementById(amtid4).innerHTML);

들어 서식 번호를 사용합니다 toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num 이제 소수점 이하 두 자리로 포맷 된 숫자가있는 문자열입니다.


1
120.50과 같이 소수점 2 자리로 그 변수를 만들 수 있습니까? 지금은 120.5 만 받고 있습니다.
Varada

16
@PhilipWhitehouse를 인용하려면 "앞으로이 글을 읽는 사람에게는 통화를 저장하는 데 부동 소수점을 사용하지 마십시오. 정밀도와 데이터를 잃게됩니다. 정수 센트 (또는 페니 등)로 저장 한 다음 사전에 변환해야합니다. 출력합니다. ". 출처 : stackoverflow.com/questions/149055/…
SSH This

@SSHThis 내가 아는 한 JavaScript에는 정수 유형이 없습니다. 64 비트 부동 소수점 숫자로 내부적으로 모두 저장되는 숫자 유형 만 있습니다. 귀하의 요점은 C #, C ++와 같은 정수 유형을 가진 다른 언어에 유효하지만 실제로 JavaScript에는 유효하지 않습니다.
Simon Brangwin

1
@SimonBrangwin 그의 요점은 여전히 ​​유효하지만 의미가 혼란 스러울 수 있습니다. 그가 실제로 의미하는 것은 "통화는 부동 소수점 숫자로 저장되므로 자바 스크립트에서 정수로만 통화를 저장합니다"입니다.
Josh Noe

알림 : parseFloat('22w')현재 22parseFloat('w22')현재NaN
IG Pascual

65

Number생성자 / 함수를 사용할 수도 있습니다 (기수가 필요하지 않고 정수와 부동 소수점 모두에 사용할 수 있음).

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

또는 Andy E가 의견에서 말한 것처럼 +변환에 사용할 수 있습니다.

+'09'; /=> 9
+'09.0987'; /=> 9.0987

이것은 IE11에서 지원되지 않습니다
Pants

에 관하여 @Pants 수를 확장 내장 객체 ES6에서 , 사용하지 않을 수있는에 대해Number
KooiInc

11

이것은 작동합니다 :

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

숫자를 비교하고 재생하기 위해 자바 스크립트 함수에 의존하는 것은 상당히 위험합니다. 자바 스크립트에서 (0.1 + 0.2 == 0.3) 반올림 오류로 인해 false를 반환합니다. math.js 라이브러리를 사용하십시오.


1

간단한 간단한 방법은 + x를 사용하는 것입니다. 십진수뿐만 아니라 부호도 그대로 유지합니다. 다른 대안은 parseFloat (x)를 사용하는 것입니다. parseFloat (x)와 + x의 차이점은 빈 문자열에 대한 것입니다. + x는 0을 반환하고 parseFloat (x)는 NaN을 반환합니다.


1

이 작업을 수행하고 모든 잘못된 데이터를 포착하기 위해 작은 도우미 기능을 만들었습니다.

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

데모는 여기

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.