LaTeX3의 정수 및 부동 소수점 정확도

LaTeX3의 정수 및 부동 소수점 정확도

randintL3fp 패키지는 다음과 같은 매개변수 범위를 제안합니다 +- 10^16 - 1. 그러나 나는 으로 제한되는 것 같습니다 +-2^31 - 1. 그 이상의 값은 Number too big컴파일 오류를 생성합니다. 반면에 나는 fp값에 대해 예상되는 전체 16자리 숫자의 정확도를 얻고 있습니다. 왜?

\documentclass{article}
% RN. 15 April 2017
% BRIEF DESCRIPTION:
%=======================
\usepackage[check-declarations]{expl3}
\usepackage{xparse}
%-----------------------
\ExplSyntaxOn
\int_new:N \l_rn_someInteger_int
\fp_new:N \l_rn_someFp_fp
\NewDocumentCommand\mySetInteger{m}
  {
    \int_set:Nn \l_rn_someInteger_int {#1}
    some~integer:~\int_use:N \l_rn_someInteger_int\\
    \int_set:Nn \l_rn_someInteger_int {\fp_eval:n {randint(#1)}}
    some~random~integer:~\int_use:N \l_rn_someInteger_int\\
    \fp_set:Nn \l_rn_someFp_fp {\fp_eval:n {rand()}}
    some~random~real:~\fp_use:N \l_rn_someFp_fp\\
    -------------------------------------------\\
  }
\ExplSyntaxOff
%-----------------------
\begin{document}
    \mySetInteger{1234}
    \mySetInteger{2147483647}

%   \mySetInteger{2147483648}
%   \mySetInteger{9999999999999999}
\end{document}

답변1

l3fp부동 소수점 표현식을 저장하는 방법을 살펴볼 수 있습니다 .

\documentclass{article}
\usepackage{xfp}

\begin{document}

\ttfamily

\ExplSyntaxOn % we want to do tests

\fp_set:Nn \l_tmpa_fp { randint(10^15,10^15+10^12) }

\fp_eval:n { \l_tmpa_fp }

\par

\cs_meaning:N \l_tmpa_fp

\ExplSyntaxOff

\end{document}

한 실험에서 나는

여기에 이미지 설명을 입력하세요

이는 범위가 –2 31 에서 2 31 –1 범위로 제한되기 때문에 무작위 정수가 TeX의 원래 의미에서 정수로 저장되지 않음을 보여줍니다 .

위에서 언급한 범위를 벗어나는 값을 정수 변수에 할당할 수는 없습니다.

"부동 소수점 정수"를 사용한 작업에는 작업 수행 시 부동 소수점 산술의 표준 제한 사항이 적용됩니다.

마찬가지로 randintrand변경 한 후

여기에 이미지 설명을 입력하세요

숫자는 지수와 유효숫자에 대한 4자리 그룹 4개와 함께 저장됩니다. 두 개의 내부 함수 \s__fp\__fp_chk:w는 숫자를 조작(확장 가능)하는 데 사용됩니다. 종결자는 ;내부 표현을 종료합니다.

답변2

숫자 21474836482^31정확하고 변수는 실제로 TeX 카운트 레지스터이며, 이는 일반적인 카운터(즉 , 숫자 \int_...)와 마찬가지로 '제한된' 숫자 범위를 갖습니다 .LaTeX- 2^{31} to 2^{31} - 12^32

expl3이 로드된 파일의 .log 파일을 살펴보면 매크로가 실제로 정의 \int...라는 것을 알 수 있습니다.\countXYZ

저장을 시도하면 마찬가지로 2147483648오버플로가 발생합니다 .\setcounter{foo}{2147483648}

부동 소수점 숫자는 차원 레지스터와 다르게 저장되며 더 큰 숫자를 허용하지만 정확도는 더 좋지 않습니다.

꼭 봐주세요LaTeX 카운터에 저장할 수 있는 최대 정수는 얼마입니까?또한.

관련 정보