다음은 간단한 시나리오입니다. 내 사이트에 표시되는 두 값의 빼기를 표시하고 싶습니다.
//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의 숫자는 .
(마침표 / 마침표) 문자를 사용하여 ,
쉼표가 아닌 소수점을 나타냅니다 .