¿Cómo explica matemáticamente la conversión de tipos?

Supongo que cuando dices “matemáticamente”, te refieres formalmente. La formalidad en los lenguajes de programación se refiere a dos cosas separadas: una es la sintaxis, la otra es la semántica. La sintaxis se puede describir con notación BNF (Backus-Naur Form). La semántica de los tipos consiste en atribuir cada expresión y cada valor con un tipo. Los tipos de expresiones son estáticos (conocidos en tiempo de compilación). Los tipos de valores pueden ser dinámicos (conocidos en tiempo de ejecución).

Para tipos estáticos (tipos de expresiones):
Las conversiones de tipos son expresiones en el lenguaje que tienen una sintaxis definida (descrita formalmente con BNF) y la semántica son las reglas que describen cómo cambia el atributo de tipo de toda la expresión cuando se usa esta sintaxis.

Para tipos dinámicos (tipos de):
Cada valor tiene un tipo y no se puede cambiar sin cambiar el valor. Por lo tanto, cambiar un tipo de valor significa cambiar el valor. Y estos son como cualquier función regular que acepta un argumento de un tipo y devuelve un valor de otro.

Tenga en cuenta que la descripción anterior es válida para lenguajes tipados estáticamente como C, C ++ o C #. En las expresiones de tipo dinámico, como Python, no hay tipos estáticos, solo los dinámicos.

Puedes pensarlo como una función. Entonces int (f) es una función que toma un número de coma flotante y devuelve un número entero, truncando la porción decimal, por lo que es algo así como su función de paso Heaviside. Otras conversiones de tipos, al menos en el ámbito numérico, también pueden verse como funciones. De hecho, en algunos lenguajes de programación, como C ++, las conversiones de tipos pueden ser anuladas e implementadas por funciones definidas por el usuario.