我有代码:
\documentclass[tikz,border=5]{article}
\usepackage{tikz}
\usepackage{xfp}
\usepackage{amsmath}
\usetikzlibrary{math}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\begin{document}
\tikzset{fixed point arithmetic}
\tikzmath{
real \x; real \y;
%
\x=-1.3754;
\y = \fpeval{round(\x*5.56,3)};
}
\tikzset{fixed point arithmetic}
\tikzmath{
real \z; real \w;
%
\z=1.3754;
\w = \fpeval{round(\z*5.56,3)};
}
\vspace{3cm}
O valor de $x$ é: \fpeval{round(\x,3)} \\
O valor de $y$ é: \y \\
O valor de $z$ é: \fpeval{round(\z,3)} \\
O valor de $w$ é: \w \\
\end{document}
其输出如下:
当我在 中运算负数时tikzmath
,结果的小数位是无法控制的。但是当计算处理正实数时,我将小数位设置为\fpeval{round(x,3)}
(三位小数),这样我就可以控制精度。我的问题是如何解决这个问题?为什么fixed point arithmetic
会对负数产生干扰?我想在tikzmath
代码空间中设置小数位,而不是在文本中。非常感谢!
答案1
使用 numprint 包。“autolanguage”选项根据 babel 包选项调整单位和千位分隔符,在本例中为巴西葡萄牙语。
\documentclass[tikz,border=5]{article}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{xfp}
\usepackage{amsmath}
\usetikzlibrary{math}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\usepackage[autolanguage]{numprint}
\begin{document}
\tikzset{fixed point arithmetic}
\tikzmath{
real \x; real \y;
%
\x=-1.3754;
\y = \fpeval{round(\x*5.56,3)};
}
\tikzset{fixed point arithmetic}
\tikzmath{
real \z; real \w;
%
\z=1.3754;
\w = \fpeval{round(\z*5.56,3)};
}
\vspace{3cm}
\nprounddigits{3}
O valor de $x$ é: \numprint{\x} \\
O valor de $y$ é: \numprint{\y} \\
\nprounddigits{4}
O valor de $z$ é: \numprint{\z} \\
O valor de $w$ é: \numprint{\w} \\
\end{document}