[javascript] Javascript parse float가 내 쉼표 뒤의 소수를 무시합니다.

다음은 간단한 시나리오입니다. 내 사이트에 표시되는 두 값의 빼기를 표시하고 싶습니다.

//Value on my websites HTML is: "75,00"
var fullcost = parseFloat($("#fullcost").text());

//Value on my websites HTML is: "0,03"
var auctioncost = parseFloat($("#auctioncost").text());

alert(fullcost); //Outputs: 75
alert(auctioncost); //Ouputs: 0

아무도 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?



답변

이것은 “설계에 의한”입니다. 이 parseFloat함수는 in이 비 +,-, 숫자, 지수 또는 소수점에 도달 할 때까지 문자열의 일부만 고려합니다. 일단 쉼표가 보이면 검색을 중지하고 “75”부분 만 고려합니다.

이를 수정하려면 쉼표를 소수점으로 변환하십시오.

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));


답변

자바 스크립트의 parseFloat는 로케일 매개 변수를 사용하지 않습니다. 당신은 대체해야합니다 그래서 ,함께.

parseFloat('0,04'.replace(/,/, '.')); // 0.04


답변

글로벌화를 사용하지 않는 이유는 무엇입니까? 이것은 영어를 사용하지 않을 때 발생할 수있는 문제 중 하나 일뿐입니다.

Globalize.parseFloat('0,04'); // 0.04

조사 할 stackoverflow의 일부 링크 :


답변

parseFloat로케일 정의가 아닌 10 진수 리터럴 의 JavaScript 정의 에 따라 구문 분석 합니다. (예 : parseFloat로케일을 인식하지 않습니다.) JavaScript의 소수 리터럴 .은 소수점으로 사용됩니다.


답변

@JaredPar는에서 지적 그의 대답의 사용을 parseFloat대체와

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));

를 유언장으로 바꾸는 것만 comma으로 dot도 문제가 해결 됩니다. 이런 식으로 수천 개 이상의 숫자가 아니라면1.000.000,00 잘못된 숫자를 제공합니다. 그래서 당신은 교체해야 comma제거합니다을 dots.

// Remove all dot's. Replace the comma.
var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));

두 개의 교체를 사용하면 출력에서 ​​잘못된 숫자를받지 않고 데이터를 처리 할 수 ​​있습니다.


답변

백만 1,234,567의 경우 모든 쉼표를 바꾸려면이 구문을 사용하는 것이 좋습니다.

var string = "1,234,567";
string = string.replace(/[^\d\.\-]/g, "");
var number = parseFloat(string);
console.log(number)

g모든 쉼표를 제거 하는 수단입니다.

여기 에서 Jsfiddle 데모를 확인 하십시오 .


답변

JS의 숫자는 .(마침표 / 마침표) 문자를 사용하여 ,쉼표가 아닌 소수점을 나타냅니다 .