부동 소수점 숫자 정밀도를 높일 수 있습니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕.계산을 수행할 때 JSL이 사용하는 부동 소수점 정밀도를 지정하는 방법이 있습니까?즉, 사용된 유효 자릿수입니다.예를 들어, 내 컴퓨터에서 1 빼기 1e-15는 0.999... (15 "9").하지만 1 빼기 1e-16을 시도하면 1이 됩니다.
x = 1;
y = 1e-15;
z = x - y;
표시(z); //z = 0.999999999999999(일명 소수점 이하 15자리)
y = 1e-16;
z = x - y;
표시(z); //z = 1
감사해요.
Re: 부동 소수점 숫자 정밀도를 높일 수 있습니까?게시한 결과를 제공하기 위해 실행한 전체 스크립트는 다음과 같습니다.
엑스 = 1 ;
와이 = 1e-15 ;
지 = 엑스 - 와이 ;
보여주다 ( 지 ) ; //z = 0.999999999999999(일명 소수점 이하 15자리)
와이 = 1e-16 ;
지 = 엑스 - 와이 ;
보여주다 ( 체재 ( 지 , "고정 12월" , 30 , 20 )) ;
11.21.1에서 스크립트를 실행했고 보고한 결과를 얻었습니다.따라서 차이점은 버전 12.2로의 변경입니다.
Re: 부동 소수점 숫자 정밀도를 높일 수 있습니까?안녕하세요 짐.또한 또 다른 중요한 질문을 깨달았습니다.게시물에서 문제 1 빼기 1e-16의 결과는 다음과 같습니다.
0.999999999999999 8 9000
(소수점 16번째 자리에서 "8" 참고)
오타였나요?
Re: 부동 소수점 숫자 정밀도를 높일 수 있습니까?짐,
죄송하지만 내 시스템에서 작동하지 않는 것 같습니다.나는 format 명령을 사용했고 답은 여전히 "1"로 나왔다.분명히 그것은 당신의 시스템에서 작동하지만 내 시스템에서는 작동하지 않습니다.중요한 경우 우리 회사에서는 여전히 JMP 11.2.1을 사용하고 있습니다.내 컴퓨터는 1년 미만입니다.
질문: Format 문서가 약간 혼란스럽습니다.
s = Format(x, formatstring, <통화 코드>, , < <<로케일 사용(b=1)>)
이를 바탕으로 명령의 "20"은 통화 코드 필드를 차지하고 "30"은 ndecimal 필드를 차지합니다.당연히 나는 후자에 관심이 있습니다."20"의 목적은 무엇입니까?
Re: 부동 소수점 숫자 정밀도를 높일 수 있습니까?JMP는 표준 하드웨어 부동 소수점 지원을 사용합니다.IEEE 부동 소수점 - Wikipedia, 무료 백과사전
알다시피 약 15개의 유효 숫자가 있습니다.
JMP는 더 긴 표현을 지원하지 않습니다.(현재 Big Int, Big Num 라이브러리는 JMP에 없습니다.)
처럼 tx넬슨 때때로 숫자를 인쇄하기 위한 기본 형식은 15개 정도의 흥미로운 숫자를 모두 표시하지 않을 수 있습니다.
Re: 부동 소수점 숫자 정밀도를 높일 수 있습니까?표시되는 것은 JMP가 데이터를 친숙한 기본 형식으로 표시하려고 시도하는 것입니다.값을 표시할 형식을 지정할 때 값 뒤의 정밀도는 변경되지 않습니다.따라서 "z" 값을 보다 정확하게 표시하도록 지정하면 그렇게 됩니다.
Show(format(z, "12월 고정", 30, 20)); = "0.99999999999999989000";