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