2010-04-20 25 views
9

Estoy tratando de usar \ ifthenelse para hacer una comparación en coma flotante. Este es el código de PGF/TikZ, que funciona si \ y es número entero solamente, pero no de otro modo:Comparar los números de punto flotante en Latex

\foreach \y in {3,3.5,...,6} { 
    ifthenelse{\y<3}{ 
     ... 
    }{ 
     ... 
    } 
} 

Respuesta

9

No puede utilizar variables flotantes. Usa dimens en lugar de. Por ejemplo

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

Para ampliar sugerencia de utilizar las dimensiones de Alexey, he aquí algo de trabajo de TI código k Z que creo que va a resolver su problema:

\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} 
+1

la colocación del 'pt' después de \ a en \ lengthtest a convertir explícitamente como una dimensión es un truco impresionante. –

0

Si ya ha definido algunos de flotación se puede utilizar el siguiente truco que funcionó para mí (basado en 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 
Cuestiones relacionadas