\documentclass{article}
\usepackage{mathtools}
\usepackage[group-minimum-digits=4]{siunitx}
\sisetup{locale=FR}
\usepackage{xintexpr}
\usepackage{xstring}
\DeclareDocumentCommand\convertfraction{ O{} m }{% argument optionnel [d ou t] puis argument mandataire {calcul ou fraction}
\def\calculargument{\xintPRaw{\xintIrr{\xinteval{#2}}}}%on calcule et on transforme en A/B
\IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
{%si oui := fraction
\StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
\StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
\ifblank{#1}{\ensuremath{\frac{\numerateur}{\denominateur}}}{}%si l'argument optionnel est vide
\IfStrEq{#1}{d}{\ensuremath{\dfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est d
\IfStrEq{#1}{t}{\ensuremath{\tfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est t
}{%si non := entier
\num{\calculargument}%on affiche l'entier, avec le package np
}
}
\begin{document}
\medskip
\convertfraction{111/2145}
\medskip
\convertfraction{111/3}
\medskip
$\frac{111}{2145}=\convertfraction{111/2145}$
\medskip
$\frac{3}{15}=\convertfraction[]{3/15}$
\medskip
$\tfrac{3}{15}=\convertfraction[t]{3/15}$
\medskip
$\dfrac{3}{15}=\convertfraction[d]{3/15}$
\medskip
$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$
\medskip
$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$
\medskip
$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$
\medskip
$\convertfraction[d]{1+1/2}$
\medskip
\end{document}