如何在文本中进行货币计算?

如何在文本中进行货币计算?

我正在写一篇长篇文章,其中有很多关于印度卢比的货币参考(使用包 tfrupee 可以轻松排版)。

在我们继续之前,先了解一下印度货币的一些特有定义:

  1. 其分组为 ..,2,2,3。例如,100,000 写为 1,00,000。(这与下面的问题不是特别相关,但为了完整性,在此提到了这个事实)。
  2. 货币单位 十万 = 十万(100,000)
  3. 货币单位千万=十万(10000000)。

回到问题。

但是,本文档的部分读者将来自美国和欧洲。因此,我想定义以下内容(元代码)。

\usepackage{tfrupee}
\usepackage{eurosym}

\newcommand{\scalefactor}[#1]{100000 if lakh and 10000000 if crore}

\newcommand{\rupeetodollars}{60.08} % Number of rupees to a dollar these days.
\newcommand{\rupeetoeuros}{82.32} % Number of rupees to a Euro these days.

\newcommand{\actualindianmoney}[2]{#1*\scalefactor{#2}}

\newcommand{\indianmoney}[2]{\rupee #1 #2\footnote{\$ \actualindianmoney{#1}{#2}/\rupeetodollars}. \eurosym \actualindianmoney{#1}{#2}/\rupeetosuros.}

使用如下调用:

\indianmoney{10}{lakh}\indianmoney{2}{crore}

但是,我从未使用 \LaTeX 进行过任何浮点计算(fp 与 pgfmath),也不知道如何将十万转换为 100000,将千万转换为 10000000(进行上述合理的乘法),以及如何确保结果中只有两位小数。

有人能帮我吗?

PS:是否有可能获取上述汇率的编译时间值,而不是可能在几周后过时的硬编码数字(尽管最近已经稳定下来,但印度卢比在过去两年中一直是波动性较大的货币之一)。

答案1

请不要基于此代码进行任何商业交易。至于获取编译时值,如果您在启用 shell-escape 的情况下运行,我猜您可以运行一些外部软件,这些软件会在某处获取信息,然后将其返回给TeX。但我不知道如何做这些事情,我不擅长赚钱。

这个答案没有关注印度卢比、美元或欧元金额的实际格式;对于后两个包siunitxnumprint将有助于获得自己选择的小数点标记和千位分隔符;对于前者在 siunitx 中根据印度数字系统对数字进行分组实现,同样使用xint,根据印度规则对数字进行分组(但仅适用于整数)。

卢比

\documentclass[a4papar]{article}
\usepackage[paperheight=5cm]{geometry}
% \usepackage[UKenglish]{babel}
% \usepackage[autolanguage]{numprint}
\usepackage{xintfrac}
\usepackage{tfrupee}
\usepackage{eurosym}

\newcommand{\rupeetodollars}{60.08} % Number of rupees to a dollar these days.
\newcommand{\rupeetoeuros}{82.32} % Number of rupees to a Euro these days.

\newcommand{\scalefactor}[1]{\csname scalefactor@#1\endcsname }
\makeatletter
\def\scalefactor@lakh  {100000}
\def\scalefactor@crore {10000000}
% 100000 if lakh and 10000000 if crore
\makeatother

\newcommand{\actualindianmoney}[2]{\xintMul{#1}{\scalefactor{#2}}}

\newcommand{\indianmoney}[2]{%
    \rupee #1 #2\footnote{\$ 
          \xintRound {2}{\xintDiv{\actualindianmoney{#1}{#2}}\rupeetodollars}}. 
    \EUR{\xintRound {2}{\xintDiv{\actualindianmoney{#1}{#2}}\rupeetoeuros}}}


\begin{document}\thispagestyle{empty}

\indianmoney {1}{lakh}

\indianmoney {0.123}{lakh}

\indianmoney {1}{crore}

\indianmoney {0.987}{crore}

\end{document}

相关内容