Expl3을 사용하여 반올림된 숫자 끝에 0을 채울 수 있는 방법이 있습니까?

Expl3을 사용하여 반올림된 숫자 끝에 0을 채울 수 있는 방법이 있습니까?

를 사용하여 삼각값 테이블을 함께 넣을 수 있었습니다 expl3. 그러나 모든 값이 소수점 이하 4자리가 되도록 끝에 0을 채우고 싶습니다. 이를 수행하는 간단한 방법이 있습니까? expl3아니면 이를 처리하기 위해 자체 매크로를 구축해야 합니까?

이것은 제가 방금 게시한 비슷한 질문과 관련이 있습니다.삼각 함수에 대한 pgfmath의 정밀도를 향상시키는 간단한 방법이 있습니까?

내 MWE는 다음과 같습니다.

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}

\def\mynum{0}
\def\myvoffset{0pt}

\usepackage{xparse}
\ExplSyntaxOn
\def\aetan#1{\fp_eval:n { round ( tand ( #1 ), 4 )}}
\def\aesin#1{\fp_eval:n { round ( sind ( #1 ), 4 )}}
\def\aecos#1{\fp_eval:n { round ( cosd ( #1 ), 4 )}}
\def\aemod#1{\fp_eval:n { #1 - round0 ( #1 / 5 , 0 ) * 5}}
\ExplSyntaxOff

\usepackage[margin=0.5in]{geometry}

\begin{document}

Using \LaTeX3

\begin{tikzpicture}

  \coordinate(UL) at (0,0);

  \node at (UL) {Degrees};
  \node[anchor=west] at ($(UL.west)+(1cm,0)$) {$\sin$};
  \node[anchor=west] at ($(UL.west)+(2.75cm,0)$) {$\cos$};
  \node[anchor=west] at ($(UL.west)+(4.50cm,0)$) {$\tan$};


  \foreach \myn in {1,2,3,...,45}
  {
    \ifnum\aemod{(\myn-1)}=0\relax
      \xdef\myvoffset{\dimexpr\myvoffset+1.350\baselineskip}%%
    \else
      \xdef\myvoffset{\dimexpr\myvoffset+1.00\baselineskip}%%
    \fi

    \coordinate (DEG/\myn)   at ($(UL.west)-(0,\myvoffset)$);
    \coordinate (DEG/S/\myn) at ($(DEG/\myn)+(1cm,0)$);
    \coordinate (DEG/C/\myn) at ($(DEG/S/\myn)+(1.75cm,0)$);
    \coordinate (DEG/T/\myn) at ($(DEG/C/\myn)+(1.75cm,0)$);

    \node[anchor=east] at (DEG/\myn)   {$\myn^\circ$};
    \node[anchor=west] at (DEG/S/\myn) {\texttt{\aesin{\myn}}};
    \node[anchor=west] at (DEG/C/\myn) {\texttt{\aecos{\myn}}};
    \node[anchor=west] at (DEG/T/\myn) {\texttt{\aetan{\myn}}};

  }

\end{tikzpicture}

\end{document}

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

답변1

해결책을 찾았지만 expl3해결책은 아닙니다. 나는 siunitx다음과 같이 패키지를 사용합니다 :

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{siunitx}
\sisetup{add-decimal-zero,
         round-precision=4,
         round-mode=places,
         round-integer-to-decimal,
         detect-all}

\def\mynum{0}
\def\myvoffset{0pt}

\usepackage{xparse}
\ExplSyntaxOn
\def\aetan#1{\num{\fp_eval:n { round ( tand ( #1 ), 4 )}}}
\def\aesin#1{\num{\fp_eval:n { round ( sind ( #1 ), 4 )}}}
\def\aecos#1{\num{\fp_eval:n { round ( cosd ( #1 ), 4 )}}}
\def\aemod#1{\fp_eval:n { #1 - round0 ( #1 / 5 , 0 ) * 5}}
\ExplSyntaxOff

\usepackage[margin=0.5in]{geometry}

\begin{document}

Using \LaTeX3

\begin{tikzpicture}

  \coordinate(UL) at (0,0);

  \node at (UL) {Degrees};
  \node[anchor=west] at ($(UL.west)+(1cm,0)$) {$\sin$};
  \node[anchor=west] at ($(UL.west)+(2.75cm,0)$) {$\cos$};
  \node[anchor=west] at ($(UL.west)+(4.50cm,0)$) {$\tan$};


  \foreach \myn in {1,2,3,...,45}
  {

    \ifnum\aemod{(\myn-1)}=0\relax
      \xdef\myvoffset{\dimexpr\myvoffset+1.350\baselineskip}%%
    \else
      \xdef\myvoffset{\dimexpr\myvoffset+1.00\baselineskip}%%
    \fi

    \coordinate (DEG/\myn)   at ($(UL.west)-(0,\myvoffset)$);
    \coordinate (SIN/\myn) at ($(DEG/\myn)+(1cm,0)$);
    \coordinate (COS/\myn) at ($(SIN/\myn)+(1.75cm,0)$);
    \coordinate (TAN/\myn) at ($(COS/\myn)+(1.75cm,0)$);

    \node[anchor=east] at (DEG/\myn)   {$\myn^\circ$};
    \node[anchor=west] at (SIN/\myn) {\texttt{\aesin{\myn}}};
    \node[anchor=west] at (COS/\myn) {\texttt{\aecos{\myn}}};
    \node[anchor=west] at (TAN/\myn) {\texttt{\aetan{\myn}}};

  }

\end{tikzpicture}

\end{document}

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

관련 정보