Сравнить числа плавающих точек в латекс

StackOverflow https://stackoverflow.com/questions/2676299

  •  28-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать Ifthense, чтобы сделать сравнение плавающего точка. Это код PGF / TIKZ, который работает, если y - только целое число, но не иначе:

\foreach \y in {3,3.5,...,6} {
    ifthenelse{\y<3}{
        ...
    }{
        ...
    }
}
Это было полезно?

Решение

Вы не можете использовать плавающие переменные. Используйте гамметр вместо. Например

\newdimen \y 
\y = 3.2pt
\ifdim \y < 3.45pt ... \else ... \fi

Другие советы

Расширить предложение Алексея об использовании измерений, вот некоторые работающие Tik.Z код, который я думаю, решит вашу проблему:

\documentclass{article}
\usepackage{tikz}
\usepackage{ifthen}
\begin{document}
  \begin{tikzpicture}
    \foreach \y in {3,3.5,...,6} {
      \ifthenelse{\lengthtest{\y pt > 4.5pt}}{
        \node at (0,\y) {\y\ is greater than 4.5!};
      }{
        \node at (0,\y) {\y\ is less than 4.5};
      }
    }
  \end{tikzpicture}
\end{document}

Если вы уже определили немного поплавок, вы можете использовать следующий трюк, который работал для меня (на основе Alexeys Post):

    \def\someFloat{1.5}

    % prepare comparison by building a dummy dim value
    \newdimen\dummyDim
    \dummyDim = \someFloat pt

    % compare:
    \ifdim \dummyDim > 0pt %
       % ...
    \else
       % ...
    \fi
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top