2014-11-27 3 views
2

숫자로 입력 요소 값을 가져 와서 jQuery로 계산합니다. 노력하고 있지만 결과는 소수가 아닙니다. 그 문제를 해결하는 방법?입력 요소에서 십진수로 값을 얻는 방법

HTML

<input name="test1" value="1.77" type="hidden" /> 
<input name="test2" value="1.23" type="hidden" /> 

jQuery를

var a = parseInt($("input[name='test1']").val(), 10); 
var b = parseInt($("input[name='test2']").val(), 10); 
alert(a + b); // should be 3, but it is only 2 

다음은 예입니다 -> jsfiddle Example

답변

3

(정수입니다) 소수에 대한 사용 parseFloat하지 parseInt!

예컨대

var a = parseFloat($("input[name='test1']").val(), 10); 
var b = parseFloat($("input[name='test2']").val(), 10); 
var c = (a + b); 

$('#result').append(c); 

JSFiddle : 대신으로 parseInt의 http://jsfiddle.net/TrueBlueAussie/87tdj7z3/5/

+0

대단히 감사합니다. 문제가 해결되었습니다 ... 저는 다른 질문이 있습니다. 이 오류에 대해 어떻게 생각하십니까? http://jsfiddle.net/ynternet/87tdj7z3/7/ – Patrik

+1

그건 부동 소수점 반올림 오류입니다. 특정 숫자의 소수 자릿수로 숫자를 반올림하려면 수학 라이브러리를 사용해야합니다. –

1
function myFunction() { 
    var a = parseFloat("10") + "<br>"; 
    var b = parseFloat("10.00") + "<br>"; 
    var c = parseFloat("10.33") + "<br>"; 
    var d = parseFloat("34 45 66") + "<br>"; 
    var e = parseFloat(" 60 ") + "<br>"; 
    var f = parseFloat("40 years") + "<br>"; 
    var g = parseFloat("He was 40") + "<br>"; 

    var n = a + b + c + d + e + f + g; 
    document.getElementById("demo").innerHTML = n; 
} 
2

사용에서는 parseFloat

var a = parseFloat($("input[name='test1']").val()); 
var b = parseFloat($("input[name='test2']").val()); 
alert(a + b); 

fiddle

2

+ 연산자를 다음과 같이 정수 및 부동 소수점을 포함한 숫자를 구문 분석하는 지름길이다.

var a = +$("input[name='test1']").val(); 
 
var b = +$("input[name='test2']").val(); 
 
alert(a + b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="test1" value="1.77" type="hidden" /> 
 
<input name="test2" value="1.23" type="hidden" />

1

나는 내가 plus operator을 활용, 그래서 숫자로 입력 값을 반환 작은 jQuery 플러그인을 만들어 jQuery를 통해 입력에서 값을 받고 많은에서는 parseFloat를 호출하는 것을 발견했다 :

jQuery.fn.valNum = function() { 
    return +(this.val()); 
}; 
관련 문제