负数定点运算中的小数位

负数定点运算中的小数位

我有代码:

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

在此处输入图片描述

相关内容