2013-06-17 4 views
1

숫자 (XX.XX의 금액 형식 일 수 있음)를 정수로 나눕니다.jquery에서 정수로 정수/실수 나누기

하지만 6.6/6 또는 3.3/3을 사용하면 1.1 대신 1.099999 ...가됩니다.

내가하는 일은 사람들의 수에 따라 똑같은 금액을 나누어서 나머지 금액이 있으면 그 중 한 사람에게 추가 금액을 추가하는 것입니다.

이런 종류 일 수 있습니다. 104/6은 17.85, 17.83, 17.83, 17.83, 17.83, 17.83으로 나뉩니다. 정확하지 않을 수 있습니다.

JS 빈 링크 ---->

http://jsbin.com/amileg/1/edit 친절 올바른 계산 논리를지고 나를 도움이됩니다.

감사합니다.

+3

를 사용할 수 있습니다. 이 질문은 여러 번 묻습니다. 나는 당신을 추천 할 좋은 사람을 찾으려고 노력할 것이다. –

+0

"해결책"은 적당한 수의 [반올림 할 소수점 수]를 선택하는 것입니다 (http://stackoverflow.com/q/8225558/901048). 이렇게하십시오 (한 번, * 모든 * 부동의 끝에서 포인트 연산). – Blazemonger

답변

1

이는 부동 소수점 연산이며 반올림 오류입니다. 더 많은 것을 위해 this를 읽을 수있다.

제한된 수의 비트에 무한히 많은 실수를 압축하면 대략적인 표현이 필요합니다. 무한히 많은 정수가 있지만 대부분의 프로그램에서 정수 계산의 결과는 32 비트로 저장할 수 있습니다. 반대로 고정 된 비트 수가 주어지면 실수를 사용하는 대부분의 계산은 해당 비트를 사용하여 정확히 표현할 수없는 양을 생성합니다. 따라서 부동 소수점 계산의 결과는 종종 유한 표현으로 되돌아 가기 위해 반올림되어야합니다. 이 반올림 오류는 부동 소수점 계산의 특징입니다.

JavaScript의 모든 숫자는 IEEE-754 Doubles의 이진수로 표시되며 정확도는 약 14 또는 15 자릿수입니다. 그것들은 분수를 포함하여 항상 실수를 정확히 나타내는 것은 아닙니다.

0

당신은이 IEEE 부동 소수점과 자연 .toFixed()

var res = (vall/tot).toFixed(2); 
//input `6.6/6`: , output : `1.10` 

데모 ---->http://jsbin.com/amileg/4/edit

+0

네,하지만 그만두고 싶지 않습니다. 내가 말한 계산을 참조하십시오. – user2229399