에 대한 BigDecimal의와 자바 스크립트에 Math.exp()를 사용하여 : x
긴 부동 소수점 숫자입니다내가 자바 스크립트에 다음과 같은 계산을 수행하려고 시도하고있어 큰 부동 소수점 숫자
e^x/(1 + e^x)
.
이 경우 최소한 소수점 10 자리까지 정확해야합니다.
나는 The Floating Point Guide에 제안 된대로 부동 소수점 숫자를 정확하게 처리하기 위해 BigDecimal을 사용 해왔다. 의
내 첫 번째 시도는 :
TypeError: Object xxxxx has no method 'add'
그래서 내가 BigDecimal를 객체로 시도 변환
bar
에 시도 :
var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = Math.exp(foo);
var spam = bar.divide(bar.add(new BigDecimal("1")));
은 (xxxxx는 부동 소수점 숫자가) 오류로했다
var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = new BigDecimal(Math.exp(foo));
var spam = bar.divide(bar.add(new BigDecimal("1")));
이 차례로 오류가 발생합니다 (여기서 xxxxx는 부동 p입니다. oint 번호) :
BigDecimal(): Not a number: xxxxx
어디로 가고 있습니까?
고도의 정밀도가 요구되는 부동 소수점을 사용하여 이러한 종류의 계산을 처리하는 것이 현명한 접근입니까?
을 정규 (이진수) 수레를 사용하면 무엇이 잘못됩니까? 그것이 오버플로가된다면, 표현식을 '1/(1 + e^-x)'형식으로 다시 쓰지 않고 양수'x'에 사용하십시오. –
고마워, 나는 이것과 연극을 할거야. – Kenners