由于某些奇怪的原因,以下代码给了我错误的情节
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[jump mark left,samples at={2.5,5,...,20}] {floor(x/2.5)};
\end{axis}
\end{tikzpicture}
\end{document}
显然,例如在 处x=15
,y 应该等于 6。这是一个错误吗?
添加:我注意到,floor()
在这种情况下,该函数是多余的 - 该jump mark left
选项的工作方式与 floor 函数一样,可以生成正确的图形。不过,这并不能证明上述错误示例的合理性。
答案1
我猜这是一个浮点舍入错误(尽管\pgfmathparse{floor(((5-2.5)*6)/2.5)}\pgfmathresult
正确打印了 6.0)。使用 TeX 尺寸进行的计算精度较差。修复它的一种方法是向 floor 参数添加一个小数字:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[jump mark left,samples at={2.5,5,...,20}] {floor(x/2.5+0.0001)};
\end{axis}
\end{tikzpicture}
\end{document}