带浮点数的二维数组

带浮点数的二维数组

以下代码适用于整数\myArray,但不适用于浮点数。如何让此代码适用于浮点数?

\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y={(0, -1)}, rotate=-45]
    \path (0.5, -0.5) node{1} ++(1, 0) node{2}
            ++(1, 0) node{3}  ++(1, 0) node{4}
            ++(1, 0) node{5}  ++(1, 0) node{6};
    \path (-0.5, 0.5) node{1} ++(0, 1) node{2}
            ++(0, 1) node{2}  ++(0, 1) node{3}
            ++(0, 1) node{4}  ++(0, 1) node{5};
    \def\myArray{{{1,5,3,4,5,6},
        {1,2,3,4,5},
        {1,2,3,4},
        {1,9.2,3},
        {1,2},
        {1}}}
    \foreach \y in {0,...,5} {
        \foreach \x in {0,...,\y} {
            \pgfmathtruncatemacro{\r}{\myArray[\x][\y-\x]}
            \draw (\x, \y - \x) rectangle +(1, 1);
            \node at (\x + 0.5, \y - \x + 0.5) {\r};
        }
    }
\end{tikzpicture}
\end{document}

答案1

使用\pgfmathsetmacro而不是\pgfmathtruncatemacro。来自 PGF 手册的第 89.1 节“解析表达式的命令”(\pgfmathtruncatemacro 上方两三行)

\pgfmathsetmacro{hmacroi}{hexpressioni}将 hmacroi 定义为 hexpressioni 的值。结果为无单位的十进制数。 \pgfmathtruncatemacro{hmacroi}{hexpressioni}将 hmacroi 定义为 hexpressioni 的截断值。

我只尝试了一位小数。

\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y={(0, -1)}, rotate=-45]
    \path (0.5, -0.5) node{1} ++(1, 0) node{2}
            ++(1, 0) node{3}  ++(1, 0) node{4}
            ++(1, 0) node{5}  ++(1, 0) node{6};
    \path (-0.5, 0.5) node{1} ++(0, 1) node{2}
            ++(0, 1) node{2}  ++(0, 1) node{3}
            ++(0, 1) node{4}  ++(0, 1) node{5};
    \def\myArray{{{1.1,5.1,3.2,4.3,5.4,6.3},
        {1,3.2,3,4,5.2},
        {0.1,2,3,4},
        {1,9.2,3},
        {3.1,2},
        {1}}}
    \foreach \y in {0,...,5} {
        \foreach \x in {0,...,\y} {
            \pgfmathsetmacro{\r}{\myArray[\x][\y-\x]}
            \draw (\x, \y - \x) rectangle +(1, 1);
            \node at (\x + 0.5, \y - \x + 0.5) {\r};
        }
    }
\end{tikzpicture}
\end{document}

带小数

相关内容